﻿2026-06-21T22:29:41.1389511Z ##[group]Run ./traceable-reqs check --json
2026-06-21T22:29:41.1389878Z [36;1m./traceable-reqs check --json[0m
2026-06-21T22:29:41.1402587Z shell: /usr/bin/bash -e {0}
2026-06-21T22:29:41.1402845Z ##[endgroup]
2026-06-21T22:29:41.2026718Z {
2026-06-21T22:29:41.2027286Z   "schemaVersion": 1,
2026-06-21T22:29:41.2027748Z   "summary": {
2026-06-21T22:29:41.2028192Z     "requirementCount": 278,
2026-06-21T22:29:41.2028906Z     "completeCount": 278,
2026-06-21T22:29:41.2029472Z     "incompleteCount": 0,
2026-06-21T22:29:41.2029900Z     "findingCount": 0
2026-06-21T22:29:41.2030296Z   },
2026-06-21T22:29:41.2030644Z   "requirements": [
2026-06-21T22:29:41.2031026Z     {
2026-06-21T22:29:41.2031844Z       "id": "REQ-API-1",
2026-06-21T22:29:41.2032422Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T22:29:41.2033037Z       "requiredStages": [
2026-06-21T22:29:41.2033442Z         "impl",
2026-06-21T22:29:41.2033790Z         "unit",
2026-06-21T22:29:41.2034127Z         "int"
2026-06-21T22:29:41.2034483Z       ],
2026-06-21T22:29:41.2034773Z       "stages": {
2026-06-21T22:29:41.2035064Z         "doc": {
2026-06-21T22:29:41.2035369Z           "complete": false,
2026-06-21T22:29:41.2035723Z           "evidence": []
2026-06-21T22:29:41.2036042Z         },
2026-06-21T22:29:41.2036332Z         "impl": {
2026-06-21T22:29:41.2036643Z           "complete": true,
2026-06-21T22:29:41.2036999Z           "evidence": [
2026-06-21T22:29:41.2037307Z             {
2026-06-21T22:29:41.2037650Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2038061Z               "line": 15
2026-06-21T22:29:41.2038376Z             }
2026-06-21T22:29:41.2038662Z           ]
2026-06-21T22:29:41.2039020Z         },
2026-06-21T22:29:41.2039316Z         "int": {
2026-06-21T22:29:41.2039628Z           "complete": true,
2026-06-21T22:29:41.2039979Z           "evidence": [
2026-06-21T22:29:41.2040295Z             {
2026-06-21T22:29:41.2040642Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2041061Z               "line": 13
2026-06-21T22:29:41.2041390Z             }
2026-06-21T22:29:41.2041690Z           ]
2026-06-21T22:29:41.2041976Z         },
2026-06-21T22:29:41.2042249Z         "unit": {
2026-06-21T22:29:41.2042563Z           "complete": true,
2026-06-21T22:29:41.2042897Z           "evidence": [
2026-06-21T22:29:41.2043220Z             {
2026-06-21T22:29:41.2043545Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2043955Z               "line": 717
2026-06-21T22:29:41.2044278Z             },
2026-06-21T22:29:41.2044564Z             {
2026-06-21T22:29:41.2044881Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2045281Z               "line": 804
2026-06-21T22:29:41.2045596Z             }
2026-06-21T22:29:41.2045882Z           ]
2026-06-21T22:29:41.2046169Z         }
2026-06-21T22:29:41.2046455Z       }
2026-06-21T22:29:41.2046732Z     },
2026-06-21T22:29:41.2047013Z     {
2026-06-21T22:29:41.2047295Z       "id": "REQ-API-2",
2026-06-21T22:29:41.2047819Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T22:29:41.2048378Z       "requiredStages": [
2026-06-21T22:29:41.2048722Z         "impl",
2026-06-21T22:29:41.2049097Z         "unit",
2026-06-21T22:29:41.2049393Z         "int"
2026-06-21T22:29:41.2049674Z       ],
2026-06-21T22:29:41.2049933Z       "stages": {
2026-06-21T22:29:41.2050226Z         "doc": {
2026-06-21T22:29:41.2050534Z           "complete": false,
2026-06-21T22:29:41.2050883Z           "evidence": []
2026-06-21T22:29:41.2051235Z         },
2026-06-21T22:29:41.2051513Z         "impl": {
2026-06-21T22:29:41.2051823Z           "complete": true,
2026-06-21T22:29:41.2052166Z           "evidence": [
2026-06-21T22:29:41.2052485Z             {
2026-06-21T22:29:41.2052823Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.2053237Z               "line": 17
2026-06-21T22:29:41.2053542Z             },
2026-06-21T22:29:41.2053819Z             {
2026-06-21T22:29:41.2054443Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.2054896Z               "line": 20
2026-06-21T22:29:41.2055195Z             },
2026-06-21T22:29:41.2055423Z             {
2026-06-21T22:29:41.2055656Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.2055942Z               "line": 142
2026-06-21T22:29:41.2056165Z             },
2026-06-21T22:29:41.2056367Z             {
2026-06-21T22:29:41.2056591Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2056862Z               "line": 24
2026-06-21T22:29:41.2057081Z             },
2026-06-21T22:29:41.2057273Z             {
2026-06-21T22:29:41.2057845Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2058257Z               "line": 41
2026-06-21T22:29:41.2058576Z             },
2026-06-21T22:29:41.2058867Z             {
2026-06-21T22:29:41.2059296Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2059700Z               "line": 213
2026-06-21T22:29:41.2060039Z             },
2026-06-21T22:29:41.2060330Z             {
2026-06-21T22:29:41.2060672Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2061089Z               "line": 255
2026-06-21T22:29:41.2061400Z             },
2026-06-21T22:29:41.2061691Z             {
2026-06-21T22:29:41.2062025Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2062444Z               "line": 334
2026-06-21T22:29:41.2062773Z             },
2026-06-21T22:29:41.2063055Z             {
2026-06-21T22:29:41.2063402Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2063820Z               "line": 397
2026-06-21T22:29:41.2064154Z             },
2026-06-21T22:29:41.2064445Z             {
2026-06-21T22:29:41.2064793Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2065200Z               "line": 436
2026-06-21T22:29:41.2065524Z             },
2026-06-21T22:29:41.2065817Z             {
2026-06-21T22:29:41.2066158Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2066564Z               "line": 17
2026-06-21T22:29:41.2066893Z             },
2026-06-21T22:29:41.2067212Z             {
2026-06-21T22:29:41.2067555Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2067971Z               "line": 30
2026-06-21T22:29:41.2068328Z             },
2026-06-21T22:29:41.2068897Z             {
2026-06-21T22:29:41.2069384Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2069813Z               "line": 63
2026-06-21T22:29:41.2070099Z             },
2026-06-21T22:29:41.2070352Z             {
2026-06-21T22:29:41.2070663Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2071020Z               "line": 77
2026-06-21T22:29:41.2071294Z             }
2026-06-21T22:29:41.2071539Z           ]
2026-06-21T22:29:41.2071798Z         },
2026-06-21T22:29:41.2072036Z         "int": {
2026-06-21T22:29:41.2072356Z           "complete": true,
2026-06-21T22:29:41.2072675Z           "evidence": [
2026-06-21T22:29:41.2072952Z             {
2026-06-21T22:29:41.2073248Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2073601Z               "line": 14
2026-06-21T22:29:41.2073859Z             },
2026-06-21T22:29:41.2074080Z             {
2026-06-21T22:29:41.2074329Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2074644Z               "line": 187
2026-06-21T22:29:41.2074949Z             }
2026-06-21T22:29:41.2075164Z           ]
2026-06-21T22:29:41.2075377Z         },
2026-06-21T22:29:41.2075649Z         "unit": {
2026-06-21T22:29:41.2075878Z           "complete": true,
2026-06-21T22:29:41.2076137Z           "evidence": [
2026-06-21T22:29:41.2076372Z             {
2026-06-21T22:29:41.2076633Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.2076933Z               "line": 82
2026-06-21T22:29:41.2077167Z             },
2026-06-21T22:29:41.2077367Z             {
2026-06-21T22:29:41.2077868Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.2078173Z               "line": 279
2026-06-21T22:29:41.2078421Z             },
2026-06-21T22:29:41.2078636Z             {
2026-06-21T22:29:41.2078907Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2079287Z               "line": 709
2026-06-21T22:29:41.2079523Z             },
2026-06-21T22:29:41.2079739Z             {
2026-06-21T22:29:41.2080006Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2080316Z               "line": 720
2026-06-21T22:29:41.2080549Z             },
2026-06-21T22:29:41.2080763Z             {
2026-06-21T22:29:41.2081145Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2081459Z               "line": 873
2026-06-21T22:29:41.2081693Z             },
2026-06-21T22:29:41.2081906Z             {
2026-06-21T22:29:41.2082162Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2082471Z               "line": 919
2026-06-21T22:29:41.2082715Z             },
2026-06-21T22:29:41.2082930Z             {
2026-06-21T22:29:41.2083178Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2083470Z               "line": 143
2026-06-21T22:29:41.2083707Z             },
2026-06-21T22:29:41.2083907Z             {
2026-06-21T22:29:41.2084137Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2084414Z               "line": 187
2026-06-21T22:29:41.2084636Z             }
2026-06-21T22:29:41.2084842Z           ]
2026-06-21T22:29:41.2085041Z         }
2026-06-21T22:29:41.2085237Z       }
2026-06-21T22:29:41.2085452Z     },
2026-06-21T22:29:41.2085656Z     {
2026-06-21T22:29:41.2085867Z       "id": "REQ-API-3",
2026-06-21T22:29:41.2086156Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T22:29:41.2086485Z       "requiredStages": [
2026-06-21T22:29:41.2086725Z         "impl",
2026-06-21T22:29:41.2086937Z         "unit",
2026-06-21T22:29:41.2087155Z         "int"
2026-06-21T22:29:41.2087365Z       ],
2026-06-21T22:29:41.2087564Z       "stages": {
2026-06-21T22:29:41.2087780Z         "doc": {
2026-06-21T22:29:41.2088013Z           "complete": false,
2026-06-21T22:29:41.2088257Z           "evidence": []
2026-06-21T22:29:41.2088485Z         },
2026-06-21T22:29:41.2088690Z         "impl": {
2026-06-21T22:29:41.2088911Z           "complete": true,
2026-06-21T22:29:41.2089230Z           "evidence": [
2026-06-21T22:29:41.2089453Z             {
2026-06-21T22:29:41.2089705Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2090012Z               "line": 27
2026-06-21T22:29:41.2090285Z             },
2026-06-21T22:29:41.2090694Z             {
2026-06-21T22:29:41.2091153Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2091821Z               "line": 566
2026-06-21T22:29:41.2092309Z             }
2026-06-21T22:29:41.2092761Z           ]
2026-06-21T22:29:41.2093223Z         },
2026-06-21T22:29:41.2093627Z         "int": {
2026-06-21T22:29:41.2094120Z           "complete": true,
2026-06-21T22:29:41.2094655Z           "evidence": [
2026-06-21T22:29:41.2095139Z             {
2026-06-21T22:29:41.2123018Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2123614Z               "line": 261
2026-06-21T22:29:41.2124014Z             }
2026-06-21T22:29:41.2124359Z           ]
2026-06-21T22:29:41.2124708Z         },
2026-06-21T22:29:41.2125061Z         "unit": {
2026-06-21T22:29:41.2125461Z           "complete": true,
2026-06-21T22:29:41.2125909Z           "evidence": [
2026-06-21T22:29:41.2126296Z             {
2026-06-21T22:29:41.2126735Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2127277Z               "line": 280
2026-06-21T22:29:41.2127683Z             },
2026-06-21T22:29:41.2128050Z             {
2026-06-21T22:29:41.2128488Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2129116Z               "line": 948
2026-06-21T22:29:41.2129538Z             }
2026-06-21T22:29:41.2130149Z           ]
2026-06-21T22:29:41.2130508Z         }
2026-06-21T22:29:41.2130850Z       }
2026-06-21T22:29:41.2131199Z     },
2026-06-21T22:29:41.2131537Z     {
2026-06-21T22:29:41.2131903Z       "id": "REQ-API-4",
2026-06-21T22:29:41.2135359Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T22:29:41.2137961Z       "requiredStages": [
2026-06-21T22:29:41.2138324Z         "doc",
2026-06-21T22:29:41.2138628Z         "impl",
2026-06-21T22:29:41.2139019Z         "unit"
2026-06-21T22:29:41.2139320Z       ],
2026-06-21T22:29:41.2139653Z       "stages": {
2026-06-21T22:29:41.2139984Z         "doc": {
2026-06-21T22:29:41.2140318Z           "complete": true,
2026-06-21T22:29:41.2140694Z           "evidence": [
2026-06-21T22:29:41.2141033Z             {
2026-06-21T22:29:41.2141367Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2141777Z               "line": 149
2026-06-21T22:29:41.2142120Z             }
2026-06-21T22:29:41.2142426Z           ]
2026-06-21T22:29:41.2142724Z         },
2026-06-21T22:29:41.2143038Z         "impl": {
2026-06-21T22:29:41.2143362Z           "complete": true,
2026-06-21T22:29:41.2143734Z           "evidence": [
2026-06-21T22:29:41.2144063Z             {
2026-06-21T22:29:41.2144424Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2144845Z               "line": 484
2026-06-21T22:29:41.2145177Z             }
2026-06-21T22:29:41.2145460Z           ]
2026-06-21T22:29:41.2145737Z         },
2026-06-21T22:29:41.2146015Z         "int": {
2026-06-21T22:29:41.2146339Z           "complete": false,
2026-06-21T22:29:41.2146700Z           "evidence": []
2026-06-21T22:29:41.2147020Z         },
2026-06-21T22:29:41.2147316Z         "unit": {
2026-06-21T22:29:41.2147620Z           "complete": true,
2026-06-21T22:29:41.2147963Z           "evidence": [
2026-06-21T22:29:41.2148268Z             {
2026-06-21T22:29:41.2148616Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2149132Z               "line": 657
2026-06-21T22:29:41.2149356Z             },
2026-06-21T22:29:41.2149556Z             {
2026-06-21T22:29:41.2149780Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2150048Z               "line": 681
2026-06-21T22:29:41.2150274Z             },
2026-06-21T22:29:41.2150544Z             {
2026-06-21T22:29:41.2150897Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2151308Z               "line": 705
2026-06-21T22:29:41.2151628Z             }
2026-06-21T22:29:41.2151913Z           ]
2026-06-21T22:29:41.2152184Z         }
2026-06-21T22:29:41.2152470Z       }
2026-06-21T22:29:41.2152756Z     },
2026-06-21T22:29:41.2153033Z     {
2026-06-21T22:29:41.2153317Z       "id": "REQ-ARCH-1",
2026-06-21T22:29:41.2153721Z       "title": "Many small acyclically-layered crates",
2026-06-21T22:29:41.2154165Z       "requiredStages": [
2026-06-21T22:29:41.2154504Z         "impl"
2026-06-21T22:29:41.2154794Z       ],
2026-06-21T22:29:41.2155085Z       "stages": {
2026-06-21T22:29:41.2155390Z         "doc": {
2026-06-21T22:29:41.2155718Z           "complete": false,
2026-06-21T22:29:41.2156088Z           "evidence": []
2026-06-21T22:29:41.2156422Z         },
2026-06-21T22:29:41.2156722Z         "impl": {
2026-06-21T22:29:41.2157057Z           "complete": true,
2026-06-21T22:29:41.2157405Z           "evidence": [
2026-06-21T22:29:41.2157734Z             {
2026-06-21T22:29:41.2158077Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T22:29:41.2158490Z               "line": 18
2026-06-21T22:29:41.2159190Z             },
2026-06-21T22:29:41.2159716Z             {
2026-06-21T22:29:41.2160063Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T22:29:41.2160473Z               "line": 12
2026-06-21T22:29:41.2160816Z             },
2026-06-21T22:29:41.2161114Z             {
2026-06-21T22:29:41.2161476Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T22:29:41.2161878Z               "line": 12
2026-06-21T22:29:41.2162212Z             }
2026-06-21T22:29:41.2162497Z           ]
2026-06-21T22:29:41.2162783Z         },
2026-06-21T22:29:41.2163064Z         "int": {
2026-06-21T22:29:41.2163384Z           "complete": false,
2026-06-21T22:29:41.2163740Z           "evidence": []
2026-06-21T22:29:41.2164211Z         },
2026-06-21T22:29:41.2164454Z         "unit": {
2026-06-21T22:29:41.2164667Z           "complete": false,
2026-06-21T22:29:41.2164911Z           "evidence": []
2026-06-21T22:29:41.2165340Z         }
2026-06-21T22:29:41.2165554Z       }
2026-06-21T22:29:41.2165826Z     },
2026-06-21T22:29:41.2166136Z     {
2026-06-21T22:29:41.2166458Z       "id": "REQ-ARCH-2",
2026-06-21T22:29:41.2166834Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T22:29:41.2167177Z       "requiredStages": [
2026-06-21T22:29:41.2167407Z         "impl"
2026-06-21T22:29:41.2167612Z       ],
2026-06-21T22:29:41.2167811Z       "stages": {
2026-06-21T22:29:41.2168017Z         "doc": {
2026-06-21T22:29:41.2168236Z           "complete": false,
2026-06-21T22:29:41.2168484Z           "evidence": []
2026-06-21T22:29:41.2168703Z         },
2026-06-21T22:29:41.2168890Z         "impl": {
2026-06-21T22:29:41.2169188Z           "complete": true,
2026-06-21T22:29:41.2169422Z           "evidence": [
2026-06-21T22:29:41.2169646Z             {
2026-06-21T22:29:41.2169895Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T22:29:41.2170171Z               "line": 18
2026-06-21T22:29:41.2170380Z             }
2026-06-21T22:29:41.2170577Z           ]
2026-06-21T22:29:41.2170767Z         },
2026-06-21T22:29:41.2170962Z         "int": {
2026-06-21T22:29:41.2171173Z           "complete": false,
2026-06-21T22:29:41.2171418Z           "evidence": []
2026-06-21T22:29:41.2171631Z         },
2026-06-21T22:29:41.2171832Z         "unit": {
2026-06-21T22:29:41.2172050Z           "complete": false,
2026-06-21T22:29:41.2172289Z           "evidence": []
2026-06-21T22:29:41.2172504Z         }
2026-06-21T22:29:41.2172689Z       }
2026-06-21T22:29:41.2172876Z     },
2026-06-21T22:29:41.2173053Z     {
2026-06-21T22:29:41.2173252Z       "id": "REQ-ARCH-3",
2026-06-21T22:29:41.2173610Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T22:29:41.2173988Z       "requiredStages": [
2026-06-21T22:29:41.2174215Z         "impl",
2026-06-21T22:29:41.2174415Z         "unit"
2026-06-21T22:29:41.2174612Z       ],
2026-06-21T22:29:41.2174808Z       "stages": {
2026-06-21T22:29:41.2175010Z         "doc": {
2026-06-21T22:29:41.2175223Z           "complete": false,
2026-06-21T22:29:41.2175461Z           "evidence": []
2026-06-21T22:29:41.2175668Z         },
2026-06-21T22:29:41.2175862Z         "impl": {
2026-06-21T22:29:41.2176076Z           "complete": true,
2026-06-21T22:29:41.2176311Z           "evidence": [
2026-06-21T22:29:41.2176525Z             {
2026-06-21T22:29:41.2176767Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T22:29:41.2177046Z               "line": 34
2026-06-21T22:29:41.2177261Z             },
2026-06-21T22:29:41.2177460Z             {
2026-06-21T22:29:41.2177699Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T22:29:41.2177981Z               "line": 41
2026-06-21T22:29:41.2178191Z             }
2026-06-21T22:29:41.2178385Z           ]
2026-06-21T22:29:41.2178581Z         },
2026-06-21T22:29:41.2178777Z         "int": {
2026-06-21T22:29:41.2179067Z           "complete": false,
2026-06-21T22:29:41.2179315Z           "evidence": []
2026-06-21T22:29:41.2179536Z         },
2026-06-21T22:29:41.2179729Z         "unit": {
2026-06-21T22:29:41.2179949Z           "complete": true,
2026-06-21T22:29:41.2180315Z           "evidence": [
2026-06-21T22:29:41.2180526Z             {
2026-06-21T22:29:41.2180769Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T22:29:41.2181061Z               "line": 51
2026-06-21T22:29:41.2181284Z             },
2026-06-21T22:29:41.2181475Z             {
2026-06-21T22:29:41.2181714Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T22:29:41.2181993Z               "line": 71
2026-06-21T22:29:41.2182205Z             },
2026-06-21T22:29:41.2182407Z             {
2026-06-21T22:29:41.2182644Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T22:29:41.2182920Z               "line": 83
2026-06-21T22:29:41.2183245Z             }
2026-06-21T22:29:41.2183446Z           ]
2026-06-21T22:29:41.2183637Z         }
2026-06-21T22:29:41.2183826Z       }
2026-06-21T22:29:41.2184009Z     },
2026-06-21T22:29:41.2184199Z     {
2026-06-21T22:29:41.2184403Z       "id": "REQ-ARCH-4",
2026-06-21T22:29:41.2184732Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T22:29:41.2185072Z       "requiredStages": [
2026-06-21T22:29:41.2185312Z         "impl",
2026-06-21T22:29:41.2185526Z         "unit"
2026-06-21T22:29:41.2185721Z       ],
2026-06-21T22:29:41.2185913Z       "stages": {
2026-06-21T22:29:41.2186126Z         "doc": {
2026-06-21T22:29:41.2186355Z           "complete": false,
2026-06-21T22:29:41.2186585Z           "evidence": []
2026-06-21T22:29:41.2186805Z         },
2026-06-21T22:29:41.2186989Z         "impl": {
2026-06-21T22:29:41.2187196Z           "complete": true,
2026-06-21T22:29:41.2187422Z           "evidence": [
2026-06-21T22:29:41.2187635Z             {
2026-06-21T22:29:41.2187884Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2188164Z               "line": 165
2026-06-21T22:29:41.2188378Z             },
2026-06-21T22:29:41.2188569Z             {
2026-06-21T22:29:41.2188803Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2189165Z               "line": 188
2026-06-21T22:29:41.2189381Z             },
2026-06-21T22:29:41.2189575Z             {
2026-06-21T22:29:41.2189809Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2190091Z               "line": 208
2026-06-21T22:29:41.2190299Z             },
2026-06-21T22:29:41.2190490Z             {
2026-06-21T22:29:41.2190719Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2190992Z               "line": 223
2026-06-21T22:29:41.2205334Z             },
2026-06-21T22:29:41.2205586Z             {
2026-06-21T22:29:41.2205853Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2206169Z               "line": 273
2026-06-21T22:29:41.2206394Z             }
2026-06-21T22:29:41.2206593Z           ]
2026-06-21T22:29:41.2206790Z         },
2026-06-21T22:29:41.2206985Z         "int": {
2026-06-21T22:29:41.2207222Z           "complete": false,
2026-06-21T22:29:41.2207467Z           "evidence": []
2026-06-21T22:29:41.2207686Z         },
2026-06-21T22:29:41.2207891Z         "unit": {
2026-06-21T22:29:41.2208099Z           "complete": true,
2026-06-21T22:29:41.2208335Z           "evidence": [
2026-06-21T22:29:41.2208547Z             {
2026-06-21T22:29:41.2208793Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2209213Z               "line": 334
2026-06-21T22:29:41.2209436Z             },
2026-06-21T22:29:41.2209637Z             {
2026-06-21T22:29:41.2209876Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2210147Z               "line": 344
2026-06-21T22:29:41.2210362Z             },
2026-06-21T22:29:41.2210559Z             {
2026-06-21T22:29:41.2210806Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2211077Z               "line": 355
2026-06-21T22:29:41.2211295Z             },
2026-06-21T22:29:41.2211496Z             {
2026-06-21T22:29:41.2211724Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2211996Z               "line": 366
2026-06-21T22:29:41.2212388Z             },
2026-06-21T22:29:41.2212583Z             {
2026-06-21T22:29:41.2212807Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2213080Z               "line": 378
2026-06-21T22:29:41.2213308Z             },
2026-06-21T22:29:41.2213484Z             {
2026-06-21T22:29:41.2213707Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2213981Z               "line": 391
2026-06-21T22:29:41.2214196Z             },
2026-06-21T22:29:41.2214392Z             {
2026-06-21T22:29:41.2214620Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2214896Z               "line": 402
2026-06-21T22:29:41.2215225Z             },
2026-06-21T22:29:41.2215421Z             {
2026-06-21T22:29:41.2215642Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2215913Z               "line": 419
2026-06-21T22:29:41.2216137Z             },
2026-06-21T22:29:41.2216324Z             {
2026-06-21T22:29:41.2216560Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.2216834Z               "line": 547
2026-06-21T22:29:41.2217054Z             }
2026-06-21T22:29:41.2217254Z           ]
2026-06-21T22:29:41.2236689Z         }
2026-06-21T22:29:41.2236928Z       }
2026-06-21T22:29:41.2237129Z     },
2026-06-21T22:29:41.2237329Z     {
2026-06-21T22:29:41.2237542Z       "id": "REQ-CLI-1",
2026-06-21T22:29:41.2238874Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T22:29:41.2240199Z       "requiredStages": [
2026-06-21T22:29:41.2240440Z         "impl",
2026-06-21T22:29:41.2240646Z         "unit"
2026-06-21T22:29:41.2240860Z       ],
2026-06-21T22:29:41.2241065Z       "stages": {
2026-06-21T22:29:41.2241275Z         "doc": {
2026-06-21T22:29:41.2241479Z           "complete": false,
2026-06-21T22:29:41.2241723Z           "evidence": []
2026-06-21T22:29:41.2241933Z         },
2026-06-21T22:29:41.2242128Z         "impl": {
2026-06-21T22:29:41.2242347Z           "complete": true,
2026-06-21T22:29:41.2242586Z           "evidence": [
2026-06-21T22:29:41.2242806Z             {
2026-06-21T22:29:41.2243038Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2243310Z               "line": 225
2026-06-21T22:29:41.2243530Z             },
2026-06-21T22:29:41.2243729Z             {
2026-06-21T22:29:41.2243963Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2244234Z               "line": 1093
2026-06-21T22:29:41.2244465Z             },
2026-06-21T22:29:41.2244663Z             {
2026-06-21T22:29:41.2244878Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2245146Z               "line": 1720
2026-06-21T22:29:41.2245383Z             },
2026-06-21T22:29:41.2245581Z             {
2026-06-21T22:29:41.2245801Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2246068Z               "line": 3124
2026-06-21T22:29:41.2246286Z             }
2026-06-21T22:29:41.2246487Z           ]
2026-06-21T22:29:41.2246688Z         },
2026-06-21T22:29:41.2246877Z         "int": {
2026-06-21T22:29:41.2247101Z           "complete": false,
2026-06-21T22:29:41.2247322Z           "evidence": []
2026-06-21T22:29:41.2247540Z         },
2026-06-21T22:29:41.2247736Z         "unit": {
2026-06-21T22:29:41.2247952Z           "complete": true,
2026-06-21T22:29:41.2248178Z           "evidence": [
2026-06-21T22:29:41.2248405Z             {
2026-06-21T22:29:41.2248625Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2248887Z               "line": 7947
2026-06-21T22:29:41.2249172Z             }
2026-06-21T22:29:41.2249368Z           ]
2026-06-21T22:29:41.2249555Z         }
2026-06-21T22:29:41.2249740Z       }
2026-06-21T22:29:41.2250103Z     },
2026-06-21T22:29:41.2250293Z     {
2026-06-21T22:29:41.2250490Z       "id": "REQ-CLI-2",
2026-06-21T22:29:41.2251381Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T22:29:41.2252240Z       "requiredStages": [
2026-06-21T22:29:41.2252465Z         "impl",
2026-06-21T22:29:41.2252669Z         "unit"
2026-06-21T22:29:41.2252865Z       ],
2026-06-21T22:29:41.2253061Z       "stages": {
2026-06-21T22:29:41.2253381Z         "doc": {
2026-06-21T22:29:41.2253588Z           "complete": false,
2026-06-21T22:29:41.2253828Z           "evidence": []
2026-06-21T22:29:41.2254046Z         },
2026-06-21T22:29:41.2254246Z         "impl": {
2026-06-21T22:29:41.2254456Z           "complete": true,
2026-06-21T22:29:41.2254695Z           "evidence": [
2026-06-21T22:29:41.2254909Z             {
2026-06-21T22:29:41.2255153Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2255448Z               "line": 414
2026-06-21T22:29:41.2255664Z             },
2026-06-21T22:29:41.2255862Z             {
2026-06-21T22:29:41.2256108Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T22:29:41.2256385Z               "line": 97
2026-06-21T22:29:41.2256603Z             },
2026-06-21T22:29:41.2256808Z             {
2026-06-21T22:29:41.2257047Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.2257338Z               "line": 256
2026-06-21T22:29:41.2257558Z             },
2026-06-21T22:29:41.2257771Z             {
2026-06-21T22:29:41.2258009Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2258264Z               "line": 434
2026-06-21T22:29:41.2258478Z             },
2026-06-21T22:29:41.2258681Z             {
2026-06-21T22:29:41.2258896Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2259252Z               "line": 1174
2026-06-21T22:29:41.2259486Z             },
2026-06-21T22:29:41.2259685Z             {
2026-06-21T22:29:41.2259905Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2260172Z               "line": 1958
2026-06-21T22:29:41.2260396Z             },
2026-06-21T22:29:41.2260596Z             {
2026-06-21T22:29:41.2260807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2261059Z               "line": 2047
2026-06-21T22:29:41.2261281Z             },
2026-06-21T22:29:41.2261476Z             {
2026-06-21T22:29:41.2261698Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2261951Z               "line": 2108
2026-06-21T22:29:41.2262180Z             }
2026-06-21T22:29:41.2262372Z           ]
2026-06-21T22:29:41.2262571Z         },
2026-06-21T22:29:41.2262757Z         "int": {
2026-06-21T22:29:41.2262977Z           "complete": false,
2026-06-21T22:29:41.2263215Z           "evidence": []
2026-06-21T22:29:41.2263434Z         },
2026-06-21T22:29:41.2263631Z         "unit": {
2026-06-21T22:29:41.2263849Z           "complete": true,
2026-06-21T22:29:41.2264091Z           "evidence": [
2026-06-21T22:29:41.2264306Z             {
2026-06-21T22:29:41.2264554Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.2264844Z               "line": 338
2026-06-21T22:29:41.2265064Z             },
2026-06-21T22:29:41.2265260Z             {
2026-06-21T22:29:41.2265474Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2265746Z               "line": 8102
2026-06-21T22:29:41.2265966Z             }
2026-06-21T22:29:41.2266161Z           ]
2026-06-21T22:29:41.2266355Z         }
2026-06-21T22:29:41.2266555Z       }
2026-06-21T22:29:41.2266743Z     },
2026-06-21T22:29:41.2266936Z     {
2026-06-21T22:29:41.2267125Z       "id": "REQ-CLI-3",
2026-06-21T22:29:41.2268031Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T22:29:41.2269086Z       "requiredStages": [
2026-06-21T22:29:41.2269308Z         "impl",
2026-06-21T22:29:41.2269521Z         "unit"
2026-06-21T22:29:41.2269707Z       ],
2026-06-21T22:29:41.2269911Z       "stages": {
2026-06-21T22:29:41.2270112Z         "doc": {
2026-06-21T22:29:41.2270322Z           "complete": false,
2026-06-21T22:29:41.2270559Z           "evidence": []
2026-06-21T22:29:41.2270784Z         },
2026-06-21T22:29:41.2270985Z         "impl": {
2026-06-21T22:29:41.2271189Z           "complete": true,
2026-06-21T22:29:41.2271533Z           "evidence": [
2026-06-21T22:29:41.2271742Z             {
2026-06-21T22:29:41.2271975Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2272240Z               "line": 1087
2026-06-21T22:29:41.2272463Z             }
2026-06-21T22:29:41.2272655Z           ]
2026-06-21T22:29:41.2272845Z         },
2026-06-21T22:29:41.2273051Z         "int": {
2026-06-21T22:29:41.2273261Z           "complete": false,
2026-06-21T22:29:41.2273493Z           "evidence": []
2026-06-21T22:29:41.2273708Z         },
2026-06-21T22:29:41.2273914Z         "unit": {
2026-06-21T22:29:41.2274133Z           "complete": true,
2026-06-21T22:29:41.2274371Z           "evidence": [
2026-06-21T22:29:41.2274586Z             {
2026-06-21T22:29:41.2274823Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2275095Z               "line": 7912
2026-06-21T22:29:41.2275314Z             }
2026-06-21T22:29:41.2275515Z           ]
2026-06-21T22:29:41.2275714Z         }
2026-06-21T22:29:41.2275915Z       }
2026-06-21T22:29:41.2276107Z     },
2026-06-21T22:29:41.2276296Z     {
2026-06-21T22:29:41.2276502Z       "id": "REQ-CLI-4",
2026-06-21T22:29:41.2278901Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T22:29:41.2280973Z       "requiredStages": [],
2026-06-21T22:29:41.2281211Z       "stages": {
2026-06-21T22:29:41.2281416Z         "doc": {
2026-06-21T22:29:41.2281645Z           "complete": false,
2026-06-21T22:29:41.2281889Z           "evidence": []
2026-06-21T22:29:41.2282112Z         },
2026-06-21T22:29:41.2282307Z         "impl": {
2026-06-21T22:29:41.2282535Z           "complete": true,
2026-06-21T22:29:41.2282775Z           "evidence": [
2026-06-21T22:29:41.2283005Z             {
2026-06-21T22:29:41.2283229Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2283507Z               "line": 5678
2026-06-21T22:29:41.2283725Z             }
2026-06-21T22:29:41.2283920Z           ]
2026-06-21T22:29:41.2284117Z         },
2026-06-21T22:29:41.2284316Z         "int": {
2026-06-21T22:29:41.2284531Z           "complete": false,
2026-06-21T22:29:41.2284766Z           "evidence": []
2026-06-21T22:29:41.2284984Z         },
2026-06-21T22:29:41.2285179Z         "unit": {
2026-06-21T22:29:41.2285398Z           "complete": false,
2026-06-21T22:29:41.2285640Z           "evidence": []
2026-06-21T22:29:41.2285883Z         }
2026-06-21T22:29:41.2286089Z       }
2026-06-21T22:29:41.2286367Z     },
2026-06-21T22:29:41.2286657Z     {
2026-06-21T22:29:41.2287062Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T22:29:41.2290466Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T22:29:41.2293780Z       "requiredStages": [
2026-06-21T22:29:41.2294081Z         "impl",
2026-06-21T22:29:41.2294466Z         "unit"
2026-06-21T22:29:41.2294748Z       ],
2026-06-21T22:29:41.2295068Z       "stages": {
2026-06-21T22:29:41.2295420Z         "doc": {
2026-06-21T22:29:41.2295716Z           "complete": false,
2026-06-21T22:29:41.2296101Z           "evidence": []
2026-06-21T22:29:41.2296402Z         },
2026-06-21T22:29:41.2296726Z         "impl": {
2026-06-21T22:29:41.2297045Z           "complete": true,
2026-06-21T22:29:41.2297374Z           "evidence": [
2026-06-21T22:29:41.2297731Z             {
2026-06-21T22:29:41.2298083Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2298496Z               "line": 8
2026-06-21T22:29:41.2298815Z             },
2026-06-21T22:29:41.2299207Z             {
2026-06-21T22:29:41.2299574Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2299936Z               "line": 51
2026-06-21T22:29:41.2300241Z             },
2026-06-21T22:29:41.2300608Z             {
2026-06-21T22:29:41.2300941Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2301348Z               "line": 82
2026-06-21T22:29:41.2301649Z             },
2026-06-21T22:29:41.2301939Z             {
2026-06-21T22:29:41.2302312Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2302685Z               "line": 229
2026-06-21T22:29:41.2303023Z             }
2026-06-21T22:29:41.2303381Z           ]
2026-06-21T22:29:41.2303646Z         },
2026-06-21T22:29:41.2303977Z         "int": {
2026-06-21T22:29:41.2304288Z           "complete": false,
2026-06-21T22:29:41.2304631Z           "evidence": []
2026-06-21T22:29:41.2304970Z         },
2026-06-21T22:29:41.2305247Z         "unit": {
2026-06-21T22:29:41.2305580Z           "complete": true,
2026-06-21T22:29:41.2305961Z           "evidence": [
2026-06-21T22:29:41.2306286Z             {
2026-06-21T22:29:41.2306638Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2307004Z               "line": 249
2026-06-21T22:29:41.2307366Z             },
2026-06-21T22:29:41.2307652Z             {
2026-06-21T22:29:41.2307953Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2308421Z               "line": 256
2026-06-21T22:29:41.2308729Z             },
2026-06-21T22:29:41.2309142Z             {
2026-06-21T22:29:41.2309467Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2309829Z               "line": 263
2026-06-21T22:29:41.2310205Z             },
2026-06-21T22:29:41.2310492Z             {
2026-06-21T22:29:41.2310844Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2311250Z               "line": 270
2026-06-21T22:29:41.2311548Z             },
2026-06-21T22:29:41.2311899Z             {
2026-06-21T22:29:41.2312228Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2312625Z               "line": 297
2026-06-21T22:29:41.2312944Z             },
2026-06-21T22:29:41.2313241Z             {
2026-06-21T22:29:41.2313602Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2314006Z               "line": 307
2026-06-21T22:29:41.2314456Z             },
2026-06-21T22:29:41.2314766Z             {
2026-06-21T22:29:41.2315081Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2315478Z               "line": 317
2026-06-21T22:29:41.2315793Z             },
2026-06-21T22:29:41.2316064Z             {
2026-06-21T22:29:41.2316460Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2316813Z               "line": 331
2026-06-21T22:29:41.2317145Z             },
2026-06-21T22:29:41.2317451Z             {
2026-06-21T22:29:41.2317737Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2318150Z               "line": 340
2026-06-21T22:29:41.2318556Z             },
2026-06-21T22:29:41.2318866Z             {
2026-06-21T22:29:41.2319318Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2319674Z               "line": 348
2026-06-21T22:29:41.2320050Z             }
2026-06-21T22:29:41.2320332Z           ]
2026-06-21T22:29:41.2320638Z         }
2026-06-21T22:29:41.2320933Z       }
2026-06-21T22:29:41.2321214Z     },
2026-06-21T22:29:41.2321539Z     {
2026-06-21T22:29:41.2321878Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T22:29:41.2330587Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T22:29:41.2334836Z       "requiredStages": [
2026-06-21T22:29:41.2335198Z         "impl",
2026-06-21T22:29:41.2335533Z         "unit"
2026-06-21T22:29:41.2335844Z       ],
2026-06-21T22:29:41.2336144Z       "stages": {
2026-06-21T22:29:41.2336444Z         "doc": {
2026-06-21T22:29:41.2336787Z           "complete": false,
2026-06-21T22:29:41.2337136Z           "evidence": []
2026-06-21T22:29:41.2337417Z         },
2026-06-21T22:29:41.2337746Z         "impl": {
2026-06-21T22:29:41.2338093Z           "complete": true,
2026-06-21T22:29:41.2338431Z           "evidence": [
2026-06-21T22:29:41.2338751Z             {
2026-06-21T22:29:41.2339158Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2339572Z               "line": 141
2026-06-21T22:29:41.2339882Z             },
2026-06-21T22:29:41.2340178Z             {
2026-06-21T22:29:41.2340537Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2340876Z               "line": 1376
2026-06-21T22:29:41.2341237Z             },
2026-06-21T22:29:41.2341528Z             {
2026-06-21T22:29:41.2341848Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2342229Z               "line": 2145
2026-06-21T22:29:41.2342520Z             },
2026-06-21T22:29:41.2342854Z             {
2026-06-21T22:29:41.2343191Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2343728Z               "line": 4368
2026-06-21T22:29:41.2344047Z             },
2026-06-21T22:29:41.2344320Z             {
2026-06-21T22:29:41.2344676Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2345029Z               "line": 4466
2026-06-21T22:29:41.2345330Z             },
2026-06-21T22:29:41.2345654Z             {
2026-06-21T22:29:41.2345999Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2346384Z               "line": 5257
2026-06-21T22:29:41.2346689Z             },
2026-06-21T22:29:41.2346962Z             {
2026-06-21T22:29:41.2347315Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2347807Z               "line": 39
2026-06-21T22:29:41.2348136Z             }
2026-06-21T22:29:41.2348479Z           ]
2026-06-21T22:29:41.2348749Z         },
2026-06-21T22:29:41.2349145Z         "int": {
2026-06-21T22:29:41.2349460Z           "complete": false,
2026-06-21T22:29:41.2349803Z           "evidence": []
2026-06-21T22:29:41.2350136Z         },
2026-06-21T22:29:41.2350423Z         "unit": {
2026-06-21T22:29:41.2350752Z           "complete": true,
2026-06-21T22:29:41.2351111Z           "evidence": [
2026-06-21T22:29:41.2351426Z             {
2026-06-21T22:29:41.2351759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2352093Z               "line": 10272
2026-06-21T22:29:41.2352465Z             },
2026-06-21T22:29:41.2352742Z             {
2026-06-21T22:29:41.2362648Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2363044Z               "line": 281
2026-06-21T22:29:41.2363278Z             },
2026-06-21T22:29:41.2363484Z             {
2026-06-21T22:29:41.2363736Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2364046Z               "line": 358
2026-06-21T22:29:41.2364283Z             },
2026-06-21T22:29:41.2364487Z             {
2026-06-21T22:29:41.2364719Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2364995Z               "line": 381
2026-06-21T22:29:41.2365225Z             },
2026-06-21T22:29:41.2365421Z             {
2026-06-21T22:29:41.2365658Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T22:29:41.2365934Z               "line": 395
2026-06-21T22:29:41.2366351Z             }
2026-06-21T22:29:41.2366713Z           ]
2026-06-21T22:29:41.2366959Z         }
2026-06-21T22:29:41.2367190Z       }
2026-06-21T22:29:41.2367411Z     },
2026-06-21T22:29:41.2367634Z     {
2026-06-21T22:29:41.2367886Z       "id": "REQ-CONSENT-1",
2026-06-21T22:29:41.2369350Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T22:29:41.2370689Z       "requiredStages": [
2026-06-21T22:29:41.2370966Z         "impl",
2026-06-21T22:29:41.2371214Z         "unit"
2026-06-21T22:29:41.2371463Z       ],
2026-06-21T22:29:41.2371700Z       "stages": {
2026-06-21T22:29:41.2371948Z         "doc": {
2026-06-21T22:29:41.2372213Z           "complete": false,
2026-06-21T22:29:41.2372508Z           "evidence": []
2026-06-21T22:29:41.2372775Z         },
2026-06-21T22:29:41.2373017Z         "impl": {
2026-06-21T22:29:41.2373284Z           "complete": true,
2026-06-21T22:29:41.2373571Z           "evidence": [
2026-06-21T22:29:41.2373823Z             {
2026-06-21T22:29:41.2374128Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2374457Z               "line": 27
2026-06-21T22:29:41.2374679Z             },
2026-06-21T22:29:41.2374890Z             {
2026-06-21T22:29:41.2375131Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2375418Z               "line": 75
2026-06-21T22:29:41.2375638Z             },
2026-06-21T22:29:41.2375832Z             {
2026-06-21T22:29:41.2376061Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2376610Z               "line": 98
2026-06-21T22:29:41.2376829Z             },
2026-06-21T22:29:41.2377024Z             {
2026-06-21T22:29:41.2377269Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2377548Z               "line": 82
2026-06-21T22:29:41.2377759Z             },
2026-06-21T22:29:41.2377947Z             {
2026-06-21T22:29:41.2378175Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2378451Z               "line": 109
2026-06-21T22:29:41.2378661Z             },
2026-06-21T22:29:41.2378857Z             {
2026-06-21T22:29:41.2379271Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2379663Z               "line": 127
2026-06-21T22:29:41.2379887Z             },
2026-06-21T22:29:41.2380079Z             {
2026-06-21T22:29:41.2380300Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2380573Z               "line": 142
2026-06-21T22:29:41.2380793Z             },
2026-06-21T22:29:41.2380992Z             {
2026-06-21T22:29:41.2381212Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2381478Z               "line": 7048
2026-06-21T22:29:41.2381694Z             }
2026-06-21T22:29:41.2381888Z           ]
2026-06-21T22:29:41.2382085Z         },
2026-06-21T22:29:41.2382284Z         "int": {
2026-06-21T22:29:41.2382493Z           "complete": false,
2026-06-21T22:29:41.2382727Z           "evidence": []
2026-06-21T22:29:41.2382943Z         },
2026-06-21T22:29:41.2383129Z         "unit": {
2026-06-21T22:29:41.2383350Z           "complete": true,
2026-06-21T22:29:41.2383572Z           "evidence": [
2026-06-21T22:29:41.2383792Z             {
2026-06-21T22:29:41.2384040Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2384322Z               "line": 334
2026-06-21T22:29:41.2384536Z             },
2026-06-21T22:29:41.2384741Z             {
2026-06-21T22:29:41.2384985Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2385267Z               "line": 380
2026-06-21T22:29:41.2385488Z             },
2026-06-21T22:29:41.2385691Z             {
2026-06-21T22:29:41.2385926Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2386207Z               "line": 391
2026-06-21T22:29:41.2386425Z             },
2026-06-21T22:29:41.2386622Z             {
2026-06-21T22:29:41.2386856Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2387142Z               "line": 165
2026-06-21T22:29:41.2387360Z             },
2026-06-21T22:29:41.2387556Z             {
2026-06-21T22:29:41.2387791Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2388060Z               "line": 184
2026-06-21T22:29:41.2388282Z             },
2026-06-21T22:29:41.2388478Z             {
2026-06-21T22:29:41.2388706Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T22:29:41.2389040Z               "line": 204
2026-06-21T22:29:41.2389255Z             },
2026-06-21T22:29:41.2389446Z             {
2026-06-21T22:29:41.2389674Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2389936Z               "line": 8334
2026-06-21T22:29:41.2390147Z             }
2026-06-21T22:29:41.2390343Z           ]
2026-06-21T22:29:41.2390533Z         }
2026-06-21T22:29:41.2390715Z       }
2026-06-21T22:29:41.2390913Z     },
2026-06-21T22:29:41.2391096Z     {
2026-06-21T22:29:41.2391300Z       "id": "REQ-CONSENT-2",
2026-06-21T22:29:41.2392302Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T22:29:41.2393272Z       "requiredStages": [
2026-06-21T22:29:41.2393488Z         "impl",
2026-06-21T22:29:41.2393695Z         "unit"
2026-06-21T22:29:41.2393905Z       ],
2026-06-21T22:29:41.2394095Z       "stages": {
2026-06-21T22:29:41.2394404Z         "doc": {
2026-06-21T22:29:41.2394620Z           "complete": false,
2026-06-21T22:29:41.2394854Z           "evidence": []
2026-06-21T22:29:41.2395072Z         },
2026-06-21T22:29:41.2395272Z         "impl": {
2026-06-21T22:29:41.2395489Z           "complete": true,
2026-06-21T22:29:41.2395731Z           "evidence": [
2026-06-21T22:29:41.2395954Z             {
2026-06-21T22:29:41.2396196Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2396481Z               "line": 140
2026-06-21T22:29:41.2396695Z             },
2026-06-21T22:29:41.2396891Z             {
2026-06-21T22:29:41.2397120Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2397510Z               "line": 165
2026-06-21T22:29:41.2397726Z             },
2026-06-21T22:29:41.2397930Z             {
2026-06-21T22:29:41.2398163Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2398445Z               "line": 199
2026-06-21T22:29:41.2398658Z             },
2026-06-21T22:29:41.2398861Z             {
2026-06-21T22:29:41.2399167Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2399453Z               "line": 241
2026-06-21T22:29:41.2399658Z             },
2026-06-21T22:29:41.2399853Z             {
2026-06-21T22:29:41.2400086Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2400364Z               "line": 269
2026-06-21T22:29:41.2400569Z             },
2026-06-21T22:29:41.2400764Z             {
2026-06-21T22:29:41.2401002Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2401275Z               "line": 300
2026-06-21T22:29:41.2401492Z             },
2026-06-21T22:29:41.2401698Z             {
2026-06-21T22:29:41.2401922Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2402189Z               "line": 6839
2026-06-21T22:29:41.2402407Z             },
2026-06-21T22:29:41.2402599Z             {
2026-06-21T22:29:41.2402828Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2403099Z               "line": 6897
2026-06-21T22:29:41.2403347Z             }
2026-06-21T22:29:41.2403543Z           ]
2026-06-21T22:29:41.2403732Z         },
2026-06-21T22:29:41.2403931Z         "int": {
2026-06-21T22:29:41.2404135Z           "complete": false,
2026-06-21T22:29:41.2404373Z           "evidence": []
2026-06-21T22:29:41.2404593Z         },
2026-06-21T22:29:41.2404799Z         "unit": {
2026-06-21T22:29:41.2405012Z           "complete": true,
2026-06-21T22:29:41.2405260Z           "evidence": [
2026-06-21T22:29:41.2405485Z             {
2026-06-21T22:29:41.2405719Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2405996Z               "line": 419
2026-06-21T22:29:41.2406228Z             },
2026-06-21T22:29:41.2406430Z             {
2026-06-21T22:29:41.2406657Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2406945Z               "line": 436
2026-06-21T22:29:41.2407145Z             },
2026-06-21T22:29:41.2407347Z             {
2026-06-21T22:29:41.2407579Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2407856Z               "line": 472
2026-06-21T22:29:41.2408066Z             },
2026-06-21T22:29:41.2408262Z             {
2026-06-21T22:29:41.2408490Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.2408766Z               "line": 516
2026-06-21T22:29:41.2409038Z             },
2026-06-21T22:29:41.2409228Z             {
2026-06-21T22:29:41.2409445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2409712Z               "line": 9614
2026-06-21T22:29:41.2409927Z             },
2026-06-21T22:29:41.2410122Z             {
2026-06-21T22:29:41.2410351Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2410466Z               "line": 9696
2026-06-21T22:29:41.2410566Z             }
2026-06-21T22:29:41.2410656Z           ]
2026-06-21T22:29:41.2410761Z         }
2026-06-21T22:29:41.2410858Z       }
2026-06-21T22:29:41.2410966Z     },
2026-06-21T22:29:41.2411163Z     {
2026-06-21T22:29:41.2411285Z       "id": "REQ-CONSENT-3",
2026-06-21T22:29:41.2413197Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T22:29:41.2413412Z       "requiredStages": [
2026-06-21T22:29:41.2413521Z         "doc",
2026-06-21T22:29:41.2413625Z         "impl",
2026-06-21T22:29:41.2413732Z         "unit",
2026-06-21T22:29:41.2413840Z         "int"
2026-06-21T22:29:41.2413940Z       ],
2026-06-21T22:29:41.2414056Z       "stages": {
2026-06-21T22:29:41.2414160Z         "doc": {
2026-06-21T22:29:41.2414287Z           "complete": true,
2026-06-21T22:29:41.2414402Z           "evidence": [
2026-06-21T22:29:41.2414505Z             {
2026-06-21T22:29:41.2414628Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2414730Z               "line": 304
2026-06-21T22:29:41.2414839Z             }
2026-06-21T22:29:41.2414938Z           ]
2026-06-21T22:29:41.2415035Z         },
2026-06-21T22:29:41.2415130Z         "impl": {
2026-06-21T22:29:41.2415248Z           "complete": true,
2026-06-21T22:29:41.2415354Z           "evidence": [
2026-06-21T22:29:41.2415449Z             {
2026-06-21T22:29:41.2415607Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.2415712Z               "line": 123
2026-06-21T22:29:41.2415816Z             },
2026-06-21T22:29:41.2415921Z             {
2026-06-21T22:29:41.2416068Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.2416183Z               "line": 162
2026-06-21T22:29:41.2416299Z             },
2026-06-21T22:29:41.2416402Z             {
2026-06-21T22:29:41.2416541Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.2416652Z               "line": 291
2026-06-21T22:29:41.2416755Z             },
2026-06-21T22:29:41.2416856Z             {
2026-06-21T22:29:41.2417004Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2417112Z               "line": 574
2026-06-21T22:29:41.2417217Z             },
2026-06-21T22:29:41.2417316Z             {
2026-06-21T22:29:41.2417457Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2417567Z               "line": 824
2026-06-21T22:29:41.2417669Z             },
2026-06-21T22:29:41.2417782Z             {
2026-06-21T22:29:41.2417907Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2418025Z               "line": 6965
2026-06-21T22:29:41.2418125Z             }
2026-06-21T22:29:41.2418226Z           ]
2026-06-21T22:29:41.2418336Z         },
2026-06-21T22:29:41.2418440Z         "int": {
2026-06-21T22:29:41.2418565Z           "complete": true,
2026-06-21T22:29:41.2418669Z           "evidence": [
2026-06-21T22:29:41.2418773Z             {
2026-06-21T22:29:41.2418926Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T22:29:41.2419108Z               "line": 16
2026-06-21T22:29:41.2419218Z             }
2026-06-21T22:29:41.2419317Z           ]
2026-06-21T22:29:41.2419418Z         },
2026-06-21T22:29:41.2419524Z         "unit": {
2026-06-21T22:29:41.2419641Z           "complete": true,
2026-06-21T22:29:41.2419745Z           "evidence": [
2026-06-21T22:29:41.2419869Z             {
2026-06-21T22:29:41.2420024Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.2420120Z               "line": 1019
2026-06-21T22:29:41.2420225Z             },
2026-06-21T22:29:41.2420325Z             {
2026-06-21T22:29:41.2420469Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.2420677Z               "line": 1066
2026-06-21T22:29:41.2420779Z             },
2026-06-21T22:29:41.2420883Z             {
2026-06-21T22:29:41.2421026Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2421145Z               "line": 1394
2026-06-21T22:29:41.2421245Z             }
2026-06-21T22:29:41.2421345Z           ]
2026-06-21T22:29:41.2421437Z         }
2026-06-21T22:29:41.2421541Z       }
2026-06-21T22:29:41.2421650Z     },
2026-06-21T22:29:41.2421738Z     {
2026-06-21T22:29:41.2421860Z       "id": "REQ-CONV-1",
2026-06-21T22:29:41.2423275Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T22:29:41.2423523Z       "requiredStages": [
2026-06-21T22:29:41.2423629Z         "impl",
2026-06-21T22:29:41.2423724Z         "unit"
2026-06-21T22:29:41.2423823Z       ],
2026-06-21T22:29:41.2423929Z       "stages": {
2026-06-21T22:29:41.2424034Z         "doc": {
2026-06-21T22:29:41.2424143Z           "complete": false,
2026-06-21T22:29:41.2424249Z           "evidence": []
2026-06-21T22:29:41.2424358Z         },
2026-06-21T22:29:41.2424463Z         "impl": {
2026-06-21T22:29:41.2424583Z           "complete": true,
2026-06-21T22:29:41.2424691Z           "evidence": [
2026-06-21T22:29:41.2424795Z             {
2026-06-21T22:29:41.2424957Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2425065Z               "line": 988
2026-06-21T22:29:41.2425165Z             },
2026-06-21T22:29:41.2425260Z             {
2026-06-21T22:29:41.2425413Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.2425527Z               "line": 94
2026-06-21T22:29:41.2425638Z             },
2026-06-21T22:29:41.2425737Z             {
2026-06-21T22:29:41.2425876Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.2425990Z               "line": 345
2026-06-21T22:29:41.2426089Z             },
2026-06-21T22:29:41.2426191Z             {
2026-06-21T22:29:41.2426334Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.2426448Z               "line": 387
2026-06-21T22:29:41.2426553Z             },
2026-06-21T22:29:41.2426643Z             {
2026-06-21T22:29:41.2426791Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.2426901Z               "line": 472
2026-06-21T22:29:41.2427006Z             },
2026-06-21T22:29:41.2427106Z             {
2026-06-21T22:29:41.2427258Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2427363Z               "line": 667
2026-06-21T22:29:41.2427465Z             },
2026-06-21T22:29:41.2427569Z             {
2026-06-21T22:29:41.2427715Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2427824Z               "line": 693
2026-06-21T22:29:41.2427928Z             },
2026-06-21T22:29:41.2428032Z             {
2026-06-21T22:29:41.2428180Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.2428285Z               "line": 369
2026-06-21T22:29:41.2428394Z             },
2026-06-21T22:29:41.2428491Z             {
2026-06-21T22:29:41.2428642Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T22:29:41.2428743Z               "line": 19
2026-06-21T22:29:41.2428847Z             }
2026-06-21T22:29:41.2429024Z           ]
2026-06-21T22:29:41.2429125Z         },
2026-06-21T22:29:41.2429234Z         "int": {
2026-06-21T22:29:41.2429338Z           "complete": false,
2026-06-21T22:29:41.2429449Z           "evidence": []
2026-06-21T22:29:41.2429538Z         },
2026-06-21T22:29:41.2429634Z         "unit": {
2026-06-21T22:29:41.2429740Z           "complete": true,
2026-06-21T22:29:41.2429949Z           "evidence": [
2026-06-21T22:29:41.2430055Z             {
2026-06-21T22:29:41.2430196Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2430310Z               "line": 1263
2026-06-21T22:29:41.2430401Z             },
2026-06-21T22:29:41.2430508Z             {
2026-06-21T22:29:41.2430656Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T22:29:41.2430762Z               "line": 108
2026-06-21T22:29:41.2430865Z             },
2026-06-21T22:29:41.2430961Z             {
2026-06-21T22:29:41.2431110Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T22:29:41.2431310Z               "line": 134
2026-06-21T22:29:41.2431405Z             },
2026-06-21T22:29:41.2431514Z             {
2026-06-21T22:29:41.2431644Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T22:29:41.2431753Z               "line": 144
2026-06-21T22:29:41.2431848Z             }
2026-06-21T22:29:41.2431949Z           ]
2026-06-21T22:29:41.2432058Z         }
2026-06-21T22:29:41.2432163Z       }
2026-06-21T22:29:41.2432264Z     },
2026-06-21T22:29:41.2432354Z     {
2026-06-21T22:29:41.2432463Z       "id": "REQ-CONV-2",
2026-06-21T22:29:41.2433593Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T22:29:41.2433707Z       "requiredStages": [
2026-06-21T22:29:41.2433821Z         "impl",
2026-06-21T22:29:41.2433917Z         "unit"
2026-06-21T22:29:41.2434026Z       ],
2026-06-21T22:29:41.2434126Z       "stages": {
2026-06-21T22:29:41.2434237Z         "doc": {
2026-06-21T22:29:41.2434346Z           "complete": false,
2026-06-21T22:29:41.2434450Z           "evidence": []
2026-06-21T22:29:41.2434561Z         },
2026-06-21T22:29:41.2434670Z         "impl": {
2026-06-21T22:29:41.2434775Z           "complete": true,
2026-06-21T22:29:41.2434885Z           "evidence": [
2026-06-21T22:29:41.2434989Z             {
2026-06-21T22:29:41.2435138Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2435247Z               "line": 409
2026-06-21T22:29:41.2435346Z             },
2026-06-21T22:29:41.2435451Z             {
2026-06-21T22:29:41.2435611Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.2435720Z               "line": 119
2026-06-21T22:29:41.2435830Z             },
2026-06-21T22:29:41.2435930Z             {
2026-06-21T22:29:41.2436092Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.2436203Z               "line": 841
2026-06-21T22:29:41.2436302Z             },
2026-06-21T22:29:41.2436407Z             {
2026-06-21T22:29:41.2436555Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.2436678Z               "line": 852
2026-06-21T22:29:41.2436784Z             },
2026-06-21T22:29:41.2436874Z             {
2026-06-21T22:29:41.2437022Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.2437128Z               "line": 334
2026-06-21T22:29:41.2437227Z             },
2026-06-21T22:29:41.2437322Z             {
2026-06-21T22:29:41.2437447Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2437561Z               "line": 3074
2026-06-21T22:29:41.2437662Z             },
2026-06-21T22:29:41.2437767Z             {
2026-06-21T22:29:41.2437895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2438005Z               "line": 3090
2026-06-21T22:29:41.2438115Z             },
2026-06-21T22:29:41.2438218Z             {
2026-06-21T22:29:41.2438352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2438460Z               "line": 3170
2026-06-21T22:29:41.2438563Z             }
2026-06-21T22:29:41.2438664Z           ]
2026-06-21T22:29:41.2438850Z         },
2026-06-21T22:29:41.2439003Z         "int": {
2026-06-21T22:29:41.2439127Z           "complete": false,
2026-06-21T22:29:41.2439245Z           "evidence": []
2026-06-21T22:29:41.2439337Z         },
2026-06-21T22:29:41.2439470Z         "unit": {
2026-06-21T22:29:41.2439570Z           "complete": true,
2026-06-21T22:29:41.2439675Z           "evidence": [
2026-06-21T22:29:41.2439775Z             {
2026-06-21T22:29:41.2439923Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2440028Z               "line": 889
2026-06-21T22:29:41.2440128Z             },
2026-06-21T22:29:41.2440228Z             {
2026-06-21T22:29:41.2440376Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2440587Z               "line": 1014
2026-06-21T22:29:41.2440691Z             },
2026-06-21T22:29:41.2440794Z             {
2026-06-21T22:29:41.2440956Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.2441055Z               "line": 215
2026-06-21T22:29:41.2441168Z             }
2026-06-21T22:29:41.2441269Z           ]
2026-06-21T22:29:41.2441369Z         }
2026-06-21T22:29:41.2441464Z       }
2026-06-21T22:29:41.2441565Z     },
2026-06-21T22:29:41.2441665Z     {
2026-06-21T22:29:41.2441778Z       "id": "REQ-DAEMON-1",
2026-06-21T22:29:41.2441979Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T22:29:41.2442093Z       "requiredStages": [
2026-06-21T22:29:41.2442194Z         "impl",
2026-06-21T22:29:41.2442298Z         "unit",
2026-06-21T22:29:41.2442403Z         "int"
2026-06-21T22:29:41.2442504Z       ],
2026-06-21T22:29:41.2442604Z       "stages": {
2026-06-21T22:29:41.2442718Z         "doc": {
2026-06-21T22:29:41.2442829Z           "complete": false,
2026-06-21T22:29:41.2442951Z           "evidence": []
2026-06-21T22:29:41.2443052Z         },
2026-06-21T22:29:41.2443153Z         "impl": {
2026-06-21T22:29:41.2443271Z           "complete": true,
2026-06-21T22:29:41.2443381Z           "evidence": [
2026-06-21T22:29:41.2443497Z             {
2026-06-21T22:29:41.2443642Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2443752Z               "line": 229
2026-06-21T22:29:41.2443848Z             },
2026-06-21T22:29:41.2443952Z             {
2026-06-21T22:29:41.2444100Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2444196Z               "line": 12
2026-06-21T22:29:41.2444295Z             },
2026-06-21T22:29:41.2444391Z             {
2026-06-21T22:29:41.2444549Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2444653Z               "line": 16
2026-06-21T22:29:41.2444759Z             },
2026-06-21T22:29:41.2444872Z             {
2026-06-21T22:29:41.2445015Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2445130Z               "line": 309
2026-06-21T22:29:41.2445235Z             },
2026-06-21T22:29:41.2445340Z             {
2026-06-21T22:29:41.2445483Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2445602Z               "line": 24
2026-06-21T22:29:41.2445698Z             },
2026-06-21T22:29:41.2445798Z             {
2026-06-21T22:29:41.2445949Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2446054Z               "line": 262
2026-06-21T22:29:41.2446162Z             },
2026-06-21T22:29:41.2446261Z             {
2026-06-21T22:29:41.2446410Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2446524Z               "line": 279
2026-06-21T22:29:41.2446624Z             },
2026-06-21T22:29:41.2446734Z             {
2026-06-21T22:29:41.2447082Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2447248Z               "line": 356
2026-06-21T22:29:41.2498528Z             },
2026-06-21T22:29:41.2498787Z             {
2026-06-21T22:29:41.2499076Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2499196Z               "line": 670
2026-06-21T22:29:41.2499301Z             },
2026-06-21T22:29:41.2499715Z             {
2026-06-21T22:29:41.2499864Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T22:29:41.2499978Z               "line": 15
2026-06-21T22:29:41.2500083Z             },
2026-06-21T22:29:41.2500183Z             {
2026-06-21T22:29:41.2500325Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.2500436Z               "line": 241
2026-06-21T22:29:41.2500536Z             },
2026-06-21T22:29:41.2500635Z             {
2026-06-21T22:29:41.2500780Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T22:29:41.2500888Z               "line": 13
2026-06-21T22:29:41.2500988Z             },
2026-06-21T22:29:41.2501207Z             {
2026-06-21T22:29:41.2501352Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2501452Z               "line": 382
2026-06-21T22:29:41.2501550Z             },
2026-06-21T22:29:41.2501654Z             {
2026-06-21T22:29:41.2501797Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2501900Z               "line": 494
2026-06-21T22:29:41.2502006Z             }
2026-06-21T22:29:41.2502101Z           ]
2026-06-21T22:29:41.2502210Z         },
2026-06-21T22:29:41.2502310Z         "int": {
2026-06-21T22:29:41.2502426Z           "complete": true,
2026-06-21T22:29:41.2502539Z           "evidence": [
2026-06-21T22:29:41.2502635Z             {
2026-06-21T22:29:41.2502840Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T22:29:41.2502940Z               "line": 2
2026-06-21T22:29:41.2503036Z             },
2026-06-21T22:29:41.2503141Z             {
2026-06-21T22:29:41.2503318Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T22:29:41.2503440Z               "line": 16
2026-06-21T22:29:41.2503531Z             },
2026-06-21T22:29:41.2503637Z             {
2026-06-21T22:29:41.2503803Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T22:29:41.2503909Z               "line": 12
2026-06-21T22:29:41.2504024Z             },
2026-06-21T22:29:41.2504122Z             {
2026-06-21T22:29:41.2504269Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T22:29:41.2504369Z               "line": 12
2026-06-21T22:29:41.2504477Z             },
2026-06-21T22:29:41.2504572Z             {
2026-06-21T22:29:41.2504735Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T22:29:41.2504839Z               "line": 44
2026-06-21T22:29:41.2504941Z             }
2026-06-21T22:29:41.2505045Z           ]
2026-06-21T22:29:41.2505139Z         },
2026-06-21T22:29:41.2505250Z         "unit": {
2026-06-21T22:29:41.2505364Z           "complete": true,
2026-06-21T22:29:41.2505478Z           "evidence": [
2026-06-21T22:29:41.2505579Z             {
2026-06-21T22:29:41.2505721Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2505831Z               "line": 285
2026-06-21T22:29:41.2505923Z             },
2026-06-21T22:29:41.2506031Z             {
2026-06-21T22:29:41.2506170Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2506275Z               "line": 293
2026-06-21T22:29:41.2506375Z             },
2026-06-21T22:29:41.2506476Z             {
2026-06-21T22:29:41.2506617Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2506723Z               "line": 309
2026-06-21T22:29:41.2506829Z             },
2026-06-21T22:29:41.2506928Z             {
2026-06-21T22:29:41.2507069Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2507189Z               "line": 317
2026-06-21T22:29:41.2507285Z             },
2026-06-21T22:29:41.2507398Z             {
2026-06-21T22:29:41.2507538Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2507646Z               "line": 659
2026-06-21T22:29:41.2507757Z             },
2026-06-21T22:29:41.2507843Z             {
2026-06-21T22:29:41.2507990Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2508181Z               "line": 729
2026-06-21T22:29:41.2508290Z             },
2026-06-21T22:29:41.2508386Z             {
2026-06-21T22:29:41.2508534Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2508643Z               "line": 1211
2026-06-21T22:29:41.2508745Z             },
2026-06-21T22:29:41.2508849Z             {
2026-06-21T22:29:41.2509084Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2509201Z               "line": 1248
2026-06-21T22:29:41.2509295Z             },
2026-06-21T22:29:41.2509401Z             {
2026-06-21T22:29:41.2509546Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2509761Z               "line": 1271
2026-06-21T22:29:41.2509866Z             },
2026-06-21T22:29:41.2509965Z             {
2026-06-21T22:29:41.2510105Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2510204Z               "line": 1300
2026-06-21T22:29:41.2510313Z             },
2026-06-21T22:29:41.2510415Z             {
2026-06-21T22:29:41.2510547Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2510658Z               "line": 1348
2026-06-21T22:29:41.2510758Z             },
2026-06-21T22:29:41.2510857Z             {
2026-06-21T22:29:41.2510987Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2511091Z               "line": 1391
2026-06-21T22:29:41.2511196Z             },
2026-06-21T22:29:41.2511292Z             {
2026-06-21T22:29:41.2511430Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T22:29:41.2511529Z               "line": 106
2026-06-21T22:29:41.2511636Z             },
2026-06-21T22:29:41.2511744Z             {
2026-06-21T22:29:41.2511883Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T22:29:41.2511988Z               "line": 132
2026-06-21T22:29:41.2512078Z             },
2026-06-21T22:29:41.2512172Z             {
2026-06-21T22:29:41.2512301Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.2512413Z               "line": 530
2026-06-21T22:29:41.2512518Z             }
2026-06-21T22:29:41.2512613Z           ]
2026-06-21T22:29:41.2512710Z         }
2026-06-21T22:29:41.2512813Z       }
2026-06-21T22:29:41.2512914Z     },
2026-06-21T22:29:41.2513005Z     {
2026-06-21T22:29:41.2513128Z       "id": "REQ-DAEMON-2",
2026-06-21T22:29:41.2513282Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T22:29:41.2513400Z       "requiredStages": [
2026-06-21T22:29:41.2513505Z         "impl",
2026-06-21T22:29:41.2513596Z         "unit",
2026-06-21T22:29:41.2513706Z         "int"
2026-06-21T22:29:41.2513791Z       ],
2026-06-21T22:29:41.2513907Z       "stages": {
2026-06-21T22:29:41.2514014Z         "doc": {
2026-06-21T22:29:41.2514125Z           "complete": true,
2026-06-21T22:29:41.2514221Z           "evidence": [
2026-06-21T22:29:41.2514325Z             {
2026-06-21T22:29:41.2514498Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T22:29:41.2514598Z               "line": 250
2026-06-21T22:29:41.2514691Z             }
2026-06-21T22:29:41.2514796Z           ]
2026-06-21T22:29:41.2514896Z         },
2026-06-21T22:29:41.2515003Z         "impl": {
2026-06-21T22:29:41.2515113Z           "complete": true,
2026-06-21T22:29:41.2515219Z           "evidence": [
2026-06-21T22:29:41.2515313Z             {
2026-06-21T22:29:41.2515462Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2515571Z               "line": 23
2026-06-21T22:29:41.2515671Z             },
2026-06-21T22:29:41.2515781Z             {
2026-06-21T22:29:41.2515920Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2516038Z               "line": 922
2026-06-21T22:29:41.2516144Z             },
2026-06-21T22:29:41.2516248Z             {
2026-06-21T22:29:41.2516386Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2516492Z               "line": 947
2026-06-21T22:29:41.2516606Z             },
2026-06-21T22:29:41.2516706Z             {
2026-06-21T22:29:41.2516953Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2517064Z               "line": 1183
2026-06-21T22:29:41.2517164Z             },
2026-06-21T22:29:41.2517273Z             {
2026-06-21T22:29:41.2517418Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2517521Z               "line": 32
2026-06-21T22:29:41.2517625Z             },
2026-06-21T22:29:41.2517716Z             {
2026-06-21T22:29:41.2517845Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2517958Z               "line": 1228
2026-06-21T22:29:41.2518060Z             },
2026-06-21T22:29:41.2518240Z             {
2026-06-21T22:29:41.2518384Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2518493Z               "line": 2064
2026-06-21T22:29:41.2518597Z             },
2026-06-21T22:29:41.2518694Z             {
2026-06-21T22:29:41.2518832Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2519005Z               "line": 2351
2026-06-21T22:29:41.2519098Z             },
2026-06-21T22:29:41.2519194Z             {
2026-06-21T22:29:41.2519329Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T22:29:41.2519441Z               "line": 11
2026-06-21T22:29:41.2519542Z             },
2026-06-21T22:29:41.2519639Z             {
2026-06-21T22:29:41.2519766Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2519875Z               "line": 153
2026-06-21T22:29:41.2519975Z             },
2026-06-21T22:29:41.2520078Z             {
2026-06-21T22:29:41.2520215Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2520321Z               "line": 343
2026-06-21T22:29:41.2520426Z             },
2026-06-21T22:29:41.2520525Z             {
2026-06-21T22:29:41.2520660Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2520764Z               "line": 13
2026-06-21T22:29:41.2520864Z             },
2026-06-21T22:29:41.2520970Z             {
2026-06-21T22:29:41.2521117Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2521228Z               "line": 27
2026-06-21T22:29:41.2521322Z             },
2026-06-21T22:29:41.2521427Z             {
2026-06-21T22:29:41.2521580Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2521685Z               "line": 173
2026-06-21T22:29:41.2521789Z             },
2026-06-21T22:29:41.2521877Z             {
2026-06-21T22:29:41.2522023Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2522133Z               "line": 682
2026-06-21T22:29:41.2522224Z             },
2026-06-21T22:29:41.2522337Z             {
2026-06-21T22:29:41.2522472Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2522582Z               "line": 903
2026-06-21T22:29:41.2522685Z             },
2026-06-21T22:29:41.2522785Z             {
2026-06-21T22:29:41.2522922Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2523035Z               "line": 1050
2026-06-21T22:29:41.2523135Z             },
2026-06-21T22:29:41.2523236Z             {
2026-06-21T22:29:41.2523368Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2523479Z               "line": 1139
2026-06-21T22:29:41.2523579Z             },
2026-06-21T22:29:41.2523678Z             {
2026-06-21T22:29:41.2523818Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2523928Z               "line": 1261
2026-06-21T22:29:41.2524021Z             },
2026-06-21T22:29:41.2524119Z             {
2026-06-21T22:29:41.2524271Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T22:29:41.2524375Z               "line": 10
2026-06-21T22:29:41.2524471Z             }
2026-06-21T22:29:41.2524561Z           ]
2026-06-21T22:29:41.2524666Z         },
2026-06-21T22:29:41.2524762Z         "int": {
2026-06-21T22:29:41.2524876Z           "complete": true,
2026-06-21T22:29:41.2524985Z           "evidence": [
2026-06-21T22:29:41.2525195Z             {
2026-06-21T22:29:41.2525341Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.2525447Z               "line": 17
2026-06-21T22:29:41.2525550Z             },
2026-06-21T22:29:41.2525640Z             {
2026-06-21T22:29:41.2525793Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.2525902Z               "line": 90
2026-06-21T22:29:41.2525993Z             },
2026-06-21T22:29:41.2526103Z             {
2026-06-21T22:29:41.2526250Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.2526366Z               "line": 110
2026-06-21T22:29:41.2526465Z             },
2026-06-21T22:29:41.2526695Z             {
2026-06-21T22:29:41.2526842Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.2526951Z               "line": 186
2026-06-21T22:29:41.2527057Z             },
2026-06-21T22:29:41.2527147Z             {
2026-06-21T22:29:41.2527296Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.2527405Z               "line": 309
2026-06-21T22:29:41.2527514Z             },
2026-06-21T22:29:41.2527620Z             {
2026-06-21T22:29:41.2527761Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T22:29:41.2527867Z               "line": 128
2026-06-21T22:29:41.2527968Z             },
2026-06-21T22:29:41.2528067Z             {
2026-06-21T22:29:41.2528208Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T22:29:41.2528315Z               "line": 59
2026-06-21T22:29:41.2528414Z             }
2026-06-21T22:29:41.2528514Z           ]
2026-06-21T22:29:41.2528620Z         },
2026-06-21T22:29:41.2528725Z         "unit": {
2026-06-21T22:29:41.2528843Z           "complete": true,
2026-06-21T22:29:41.2529015Z           "evidence": [
2026-06-21T22:29:41.2529115Z             {
2026-06-21T22:29:41.2529250Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T22:29:41.2529358Z               "line": 62
2026-06-21T22:29:41.2529487Z             },
2026-06-21T22:29:41.2529584Z             {
2026-06-21T22:29:41.2529725Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T22:29:41.2529826Z               "line": 76
2026-06-21T22:29:41.2529936Z             },
2026-06-21T22:29:41.2530040Z             {
2026-06-21T22:29:41.2530170Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T22:29:41.2530279Z               "line": 88
2026-06-21T22:29:41.2530378Z             },
2026-06-21T22:29:41.2530483Z             {
2026-06-21T22:29:41.2530615Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.2530728Z               "line": 347
2026-06-21T22:29:41.2530838Z             },
2026-06-21T22:29:41.2530930Z             {
2026-06-21T22:29:41.2531066Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2531177Z               "line": 901
2026-06-21T22:29:41.2531277Z             },
2026-06-21T22:29:41.2531381Z             {
2026-06-21T22:29:41.2531515Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2531629Z               "line": 909
2026-06-21T22:29:41.2531719Z             },
2026-06-21T22:29:41.2531826Z             {
2026-06-21T22:29:41.2531953Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2532068Z               "line": 926
2026-06-21T22:29:41.2532169Z             },
2026-06-21T22:29:41.2532264Z             {
2026-06-21T22:29:41.2532407Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2532507Z               "line": 1035
2026-06-21T22:29:41.2532607Z             },
2026-06-21T22:29:41.2532708Z             {
2026-06-21T22:29:41.2532850Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2532974Z               "line": 1370
2026-06-21T22:29:41.2533076Z             },
2026-06-21T22:29:41.2533179Z             {
2026-06-21T22:29:41.2533325Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2533426Z               "line": 1382
2026-06-21T22:29:41.2533633Z             },
2026-06-21T22:29:41.2533739Z             {
2026-06-21T22:29:41.2533891Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T22:29:41.2533996Z               "line": 110
2026-06-21T22:29:41.2534102Z             },
2026-06-21T22:29:41.2534201Z             {
2026-06-21T22:29:41.2534345Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T22:29:41.2534459Z               "line": 145
2026-06-21T22:29:41.2534563Z             }
2026-06-21T22:29:41.2534669Z           ]
2026-06-21T22:29:41.2534764Z         }
2026-06-21T22:29:41.2534864Z       }
2026-06-21T22:29:41.2534964Z     },
2026-06-21T22:29:41.2535065Z     {
2026-06-21T22:29:41.2535265Z       "id": "REQ-DAEMON-3",
2026-06-21T22:29:41.2535459Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T22:29:41.2535575Z       "requiredStages": [
2026-06-21T22:29:41.2535675Z         "impl",
2026-06-21T22:29:41.2535779Z         "unit",
2026-06-21T22:29:41.2535878Z         "int"
2026-06-21T22:29:41.2535992Z       ],
2026-06-21T22:29:41.2536082Z       "stages": {
2026-06-21T22:29:41.2536195Z         "doc": {
2026-06-21T22:29:41.2536330Z           "complete": false,
2026-06-21T22:29:41.2536439Z           "evidence": []
2026-06-21T22:29:41.2536543Z         },
2026-06-21T22:29:41.2536645Z         "impl": {
2026-06-21T22:29:41.2536768Z           "complete": true,
2026-06-21T22:29:41.2536872Z           "evidence": [
2026-06-21T22:29:41.2536978Z             {
2026-06-21T22:29:41.2537129Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2537236Z               "line": 14
2026-06-21T22:29:41.2537340Z             },
2026-06-21T22:29:41.2537444Z             {
2026-06-21T22:29:41.2537598Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T22:29:41.2537707Z               "line": 11
2026-06-21T22:29:41.2537812Z             },
2026-06-21T22:29:41.2537913Z             {
2026-06-21T22:29:41.2538046Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.2538156Z               "line": 305
2026-06-21T22:29:41.2538256Z             },
2026-06-21T22:29:41.2538360Z             {
2026-06-21T22:29:41.2538490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2538599Z               "line": 1956
2026-06-21T22:29:41.2538707Z             },
2026-06-21T22:29:41.2538807Z             {
2026-06-21T22:29:41.2538938Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2539461Z               "line": 4235
2026-06-21T22:29:41.2539570Z             },
2026-06-21T22:29:41.2539665Z             {
2026-06-21T22:29:41.2539795Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2539904Z               "line": 4256
2026-06-21T22:29:41.2540004Z             }
2026-06-21T22:29:41.2540105Z           ]
2026-06-21T22:29:41.2540191Z         },
2026-06-21T22:29:41.2540295Z         "int": {
2026-06-21T22:29:41.2540411Z           "complete": true,
2026-06-21T22:29:41.2540515Z           "evidence": [
2026-06-21T22:29:41.2540619Z             {
2026-06-21T22:29:41.2540759Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2540876Z               "line": 49
2026-06-21T22:29:41.2540976Z             },
2026-06-21T22:29:41.2541081Z             {
2026-06-21T22:29:41.2541207Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.2541321Z               "line": 487
2026-06-21T22:29:41.2541427Z             }
2026-06-21T22:29:41.2541518Z           ]
2026-06-21T22:29:41.2541622Z         },
2026-06-21T22:29:41.2541722Z         "unit": {
2026-06-21T22:29:41.2541828Z           "complete": true,
2026-06-21T22:29:41.2541937Z           "evidence": [
2026-06-21T22:29:41.2542043Z             {
2026-06-21T22:29:41.2542189Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2542299Z               "line": 1553
2026-06-21T22:29:41.2542396Z             },
2026-06-21T22:29:41.2542495Z             {
2026-06-21T22:29:41.2542618Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2542847Z               "line": 10715
2026-06-21T22:29:41.2542943Z             }
2026-06-21T22:29:41.2543049Z           ]
2026-06-21T22:29:41.2543148Z         }
2026-06-21T22:29:41.2543253Z       }
2026-06-21T22:29:41.2543354Z     },
2026-06-21T22:29:41.2543457Z     {
2026-06-21T22:29:41.2543568Z       "id": "REQ-DAEMON-4",
2026-06-21T22:29:41.2543720Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T22:29:41.2543843Z       "requiredStages": [
2026-06-21T22:29:41.2543943Z         "impl",
2026-06-21T22:29:41.2544047Z         "unit",
2026-06-21T22:29:41.2544151Z         "int"
2026-06-21T22:29:41.2544255Z       ],
2026-06-21T22:29:41.2544361Z       "stages": {
2026-06-21T22:29:41.2544565Z         "doc": {
2026-06-21T22:29:41.2544685Z           "complete": false,
2026-06-21T22:29:41.2544789Z           "evidence": []
2026-06-21T22:29:41.2544900Z         },
2026-06-21T22:29:41.2545000Z         "impl": {
2026-06-21T22:29:41.2545104Z           "complete": true,
2026-06-21T22:29:41.2545209Z           "evidence": [
2026-06-21T22:29:41.2545324Z             {
2026-06-21T22:29:41.2545476Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2545578Z               "line": 464
2026-06-21T22:29:41.2545686Z             },
2026-06-21T22:29:41.2545791Z             {
2026-06-21T22:29:41.2545940Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2546043Z               "line": 529
2026-06-21T22:29:41.2546140Z             },
2026-06-21T22:29:41.2546259Z             {
2026-06-21T22:29:41.2546414Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2546529Z               "line": 551
2026-06-21T22:29:41.2546637Z             }
2026-06-21T22:29:41.2546745Z           ]
2026-06-21T22:29:41.2546842Z         },
2026-06-21T22:29:41.2546947Z         "int": {
2026-06-21T22:29:41.2547065Z           "complete": true,
2026-06-21T22:29:41.2547171Z           "evidence": [
2026-06-21T22:29:41.2547276Z             {
2026-06-21T22:29:41.2547428Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T22:29:41.2547538Z               "line": 42
2026-06-21T22:29:41.2547647Z             }
2026-06-21T22:29:41.2547748Z           ]
2026-06-21T22:29:41.2547853Z         },
2026-06-21T22:29:41.2547953Z         "unit": {
2026-06-21T22:29:41.2548062Z           "complete": true,
2026-06-21T22:29:41.2548172Z           "evidence": [
2026-06-21T22:29:41.2548272Z             {
2026-06-21T22:29:41.2548416Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.2548525Z               "line": 428
2026-06-21T22:29:41.2548630Z             },
2026-06-21T22:29:41.2548726Z             {
2026-06-21T22:29:41.2548868Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2549050Z               "line": 957
2026-06-21T22:29:41.2549159Z             },
2026-06-21T22:29:41.2549258Z             {
2026-06-21T22:29:41.2549401Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2549512Z               "line": 1027
2026-06-21T22:29:41.2549605Z             },
2026-06-21T22:29:41.2549702Z             {
2026-06-21T22:29:41.2549845Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2549944Z               "line": 1057
2026-06-21T22:29:41.2550050Z             },
2026-06-21T22:29:41.2550150Z             {
2026-06-21T22:29:41.2550283Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2550394Z               "line": 1090
2026-06-21T22:29:41.2550498Z             }
2026-06-21T22:29:41.2550593Z           ]
2026-06-21T22:29:41.2550699Z         }
2026-06-21T22:29:41.2550802Z       }
2026-06-21T22:29:41.2550893Z     },
2026-06-21T22:29:41.2551004Z     {
2026-06-21T22:29:41.2551103Z       "id": "REQ-DAEMON-5",
2026-06-21T22:29:41.2552617Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T22:29:41.2552849Z       "requiredStages": [
2026-06-21T22:29:41.2552946Z         "impl",
2026-06-21T22:29:41.2553046Z         "unit"
2026-06-21T22:29:41.2553145Z       ],
2026-06-21T22:29:41.2553251Z       "stages": {
2026-06-21T22:29:41.2553355Z         "doc": {
2026-06-21T22:29:41.2553474Z           "complete": false,
2026-06-21T22:29:41.2553585Z           "evidence": []
2026-06-21T22:29:41.2553679Z         },
2026-06-21T22:29:41.2553789Z         "impl": {
2026-06-21T22:29:41.2553998Z           "complete": true,
2026-06-21T22:29:41.2554109Z           "evidence": [
2026-06-21T22:29:41.2554210Z             {
2026-06-21T22:29:41.2554360Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2554470Z               "line": 476
2026-06-21T22:29:41.2554566Z             },
2026-06-21T22:29:41.2554673Z             {
2026-06-21T22:29:41.2554820Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2554936Z               "line": 769
2026-06-21T22:29:41.2555035Z             },
2026-06-21T22:29:41.2555140Z             {
2026-06-21T22:29:41.2555288Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2555392Z               "line": 782
2026-06-21T22:29:41.2555499Z             },
2026-06-21T22:29:41.2555598Z             {
2026-06-21T22:29:41.2555746Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2555846Z               "line": 800
2026-06-21T22:29:41.2555955Z             },
2026-06-21T22:29:41.2556065Z             {
2026-06-21T22:29:41.2556203Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2556318Z               "line": 841
2026-06-21T22:29:41.2556419Z             }
2026-06-21T22:29:41.2556528Z           ]
2026-06-21T22:29:41.2556628Z         },
2026-06-21T22:29:41.2556738Z         "int": {
2026-06-21T22:29:41.2556861Z           "complete": false,
2026-06-21T22:29:41.2556960Z           "evidence": []
2026-06-21T22:29:41.2557060Z         },
2026-06-21T22:29:41.2557160Z         "unit": {
2026-06-21T22:29:41.2557277Z           "complete": true,
2026-06-21T22:29:41.2557382Z           "evidence": [
2026-06-21T22:29:41.2557493Z             {
2026-06-21T22:29:41.2557634Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2557745Z               "line": 1189
2026-06-21T22:29:41.2557855Z             },
2026-06-21T22:29:41.2557954Z             {
2026-06-21T22:29:41.2558098Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2558217Z               "line": 1213
2026-06-21T22:29:41.2558322Z             },
2026-06-21T22:29:41.2558427Z             {
2026-06-21T22:29:41.2558560Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.2558666Z               "line": 1239
2026-06-21T22:29:41.2558766Z             }
2026-06-21T22:29:41.2558880Z           ]
2026-06-21T22:29:41.2559052Z         }
2026-06-21T22:29:41.2559166Z       }
2026-06-21T22:29:41.2559262Z     },
2026-06-21T22:29:41.2559353Z     {
2026-06-21T22:29:41.2559485Z       "id": "REQ-DAEMON-6",
2026-06-21T22:29:41.2561492Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T22:29:41.2561631Z       "requiredStages": [
2026-06-21T22:29:41.2561735Z         "impl",
2026-06-21T22:29:41.2561955Z         "unit"
2026-06-21T22:29:41.2562063Z       ],
2026-06-21T22:29:41.2562168Z       "stages": {
2026-06-21T22:29:41.2562277Z         "doc": {
2026-06-21T22:29:41.2562394Z           "complete": false,
2026-06-21T22:29:41.2562504Z           "evidence": []
2026-06-21T22:29:41.2562610Z         },
2026-06-21T22:29:41.2562713Z         "impl": {
2026-06-21T22:29:41.2562829Z           "complete": true,
2026-06-21T22:29:41.2562933Z           "evidence": [
2026-06-21T22:29:41.2563037Z             {
2026-06-21T22:29:41.2563187Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2563296Z               "line": 495
2026-06-21T22:29:41.2563511Z             },
2026-06-21T22:29:41.2563611Z             {
2026-06-21T22:29:41.2563758Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2563868Z               "line": 526
2026-06-21T22:29:41.2563968Z             },
2026-06-21T22:29:41.2564073Z             {
2026-06-21T22:29:41.2564216Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2564335Z               "line": 55
2026-06-21T22:29:41.2564436Z             },
2026-06-21T22:29:41.2564540Z             {
2026-06-21T22:29:41.2564688Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2564794Z               "line": 70
2026-06-21T22:29:41.2564892Z             },
2026-06-21T22:29:41.2564992Z             {
2026-06-21T22:29:41.2565126Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2565233Z               "line": 2020
2026-06-21T22:29:41.2565337Z             },
2026-06-21T22:29:41.2565439Z             {
2026-06-21T22:29:41.2565566Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2565686Z               "line": 2046
2026-06-21T22:29:41.2565791Z             }
2026-06-21T22:29:41.2565890Z           ]
2026-06-21T22:29:41.2565991Z         },
2026-06-21T22:29:41.2566101Z         "int": {
2026-06-21T22:29:41.2566219Z           "complete": false,
2026-06-21T22:29:41.2566330Z           "evidence": []
2026-06-21T22:29:41.2566444Z         },
2026-06-21T22:29:41.2566549Z         "unit": {
2026-06-21T22:29:41.2566664Z           "complete": true,
2026-06-21T22:29:41.2566768Z           "evidence": [
2026-06-21T22:29:41.2566873Z             {
2026-06-21T22:29:41.2567022Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2567130Z               "line": 288
2026-06-21T22:29:41.2567236Z             },
2026-06-21T22:29:41.2567332Z             {
2026-06-21T22:29:41.2567473Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2567572Z               "line": 299
2026-06-21T22:29:41.2567678Z             },
2026-06-21T22:29:41.2567785Z             {
2026-06-21T22:29:41.2567919Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2568034Z               "line": 325
2026-06-21T22:29:41.2568133Z             },
2026-06-21T22:29:41.2568243Z             {
2026-06-21T22:29:41.2568372Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2568491Z               "line": 351
2026-06-21T22:29:41.2568592Z             }
2026-06-21T22:29:41.2568687Z           ]
2026-06-21T22:29:41.2568786Z         }
2026-06-21T22:29:41.2568887Z       }
2026-06-21T22:29:41.2569068Z     },
2026-06-21T22:29:41.2569163Z     {
2026-06-21T22:29:41.2569288Z       "id": "REQ-DAEMON-7",
2026-06-21T22:29:41.2570779Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T22:29:41.2570908Z       "requiredStages": [
2026-06-21T22:29:41.2571017Z         "impl",
2026-06-21T22:29:41.2571117Z         "unit"
2026-06-21T22:29:41.2571332Z       ],
2026-06-21T22:29:41.2571437Z       "stages": {
2026-06-21T22:29:41.2571537Z         "doc": {
2026-06-21T22:29:41.2571647Z           "complete": false,
2026-06-21T22:29:41.2571756Z           "evidence": []
2026-06-21T22:29:41.2571852Z         },
2026-06-21T22:29:41.2571957Z         "impl": {
2026-06-21T22:29:41.2572076Z           "complete": true,
2026-06-21T22:29:41.2572186Z           "evidence": [
2026-06-21T22:29:41.2572280Z             {
2026-06-21T22:29:41.2572430Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2572538Z               "line": 545
2026-06-21T22:29:41.2572642Z             },
2026-06-21T22:29:41.2572747Z             {
2026-06-21T22:29:41.2572997Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.2573107Z               "line": 610
2026-06-21T22:29:41.2573207Z             },
2026-06-21T22:29:41.2573307Z             {
2026-06-21T22:29:41.2573451Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2573560Z               "line": 89
2026-06-21T22:29:41.2573660Z             },
2026-06-21T22:29:41.2573756Z             {
2026-06-21T22:29:41.2573875Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2573980Z               "line": 1957
2026-06-21T22:29:41.2574071Z             }
2026-06-21T22:29:41.2574171Z           ]
2026-06-21T22:29:41.2574275Z         },
2026-06-21T22:29:41.2574371Z         "int": {
2026-06-21T22:29:41.2574480Z           "complete": false,
2026-06-21T22:29:41.2574590Z           "evidence": []
2026-06-21T22:29:41.2574686Z         },
2026-06-21T22:29:41.2574795Z         "unit": {
2026-06-21T22:29:41.2574904Z           "complete": true,
2026-06-21T22:29:41.2575025Z           "evidence": [
2026-06-21T22:29:41.2575124Z             {
2026-06-21T22:29:41.2575263Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2575369Z               "line": 314
2026-06-21T22:29:41.2575476Z             },
2026-06-21T22:29:41.2575580Z             {
2026-06-21T22:29:41.2575714Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2575826Z               "line": 8102
2026-06-21T22:29:41.2575932Z             }
2026-06-21T22:29:41.2576027Z           ]
2026-06-21T22:29:41.2576136Z         }
2026-06-21T22:29:41.2576236Z       }
2026-06-21T22:29:41.2576333Z     },
2026-06-21T22:29:41.2576432Z     {
2026-06-21T22:29:41.2576546Z       "id": "REQ-DAEMON-8",
2026-06-21T22:29:41.2577520Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T22:29:41.2577648Z       "requiredStages": [
2026-06-21T22:29:41.2577757Z         "impl",
2026-06-21T22:29:41.2577863Z         "unit"
2026-06-21T22:29:41.2577968Z       ],
2026-06-21T22:29:41.2578076Z       "stages": {
2026-06-21T22:29:41.2578176Z         "doc": {
2026-06-21T22:29:41.2578308Z           "complete": false,
2026-06-21T22:29:41.2578407Z           "evidence": []
2026-06-21T22:29:41.2578517Z         },
2026-06-21T22:29:41.2578623Z         "impl": {
2026-06-21T22:29:41.2578727Z           "complete": true,
2026-06-21T22:29:41.2578832Z           "evidence": [
2026-06-21T22:29:41.2578937Z             {
2026-06-21T22:29:41.2579152Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2579261Z               "line": 445
2026-06-21T22:29:41.2579370Z             },
2026-06-21T22:29:41.2579467Z             {
2026-06-21T22:29:41.2579619Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2579723Z               "line": 56
2026-06-21T22:29:41.2585233Z             }
2026-06-21T22:29:41.2585336Z           ]
2026-06-21T22:29:41.2585436Z         },
2026-06-21T22:29:41.2585538Z         "int": {
2026-06-21T22:29:41.2585651Z           "complete": false,
2026-06-21T22:29:41.2585756Z           "evidence": []
2026-06-21T22:29:41.2586018Z         },
2026-06-21T22:29:41.2586117Z         "unit": {
2026-06-21T22:29:41.2586236Z           "complete": true,
2026-06-21T22:29:41.2586344Z           "evidence": [
2026-06-21T22:29:41.2586443Z             {
2026-06-21T22:29:41.2586597Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2586710Z               "line": 288
2026-06-21T22:29:41.2586806Z             },
2026-06-21T22:29:41.2586916Z             {
2026-06-21T22:29:41.2587073Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T22:29:41.2587179Z               "line": 325
2026-06-21T22:29:41.2587284Z             }
2026-06-21T22:29:41.2587378Z           ]
2026-06-21T22:29:41.2587579Z         }
2026-06-21T22:29:41.2587678Z       }
2026-06-21T22:29:41.2587785Z     },
2026-06-21T22:29:41.2587884Z     {
2026-06-21T22:29:41.2587993Z       "id": "REQ-DAEMON-9",
2026-06-21T22:29:41.2590474Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T22:29:41.2590627Z       "requiredStages": [
2026-06-21T22:29:41.2590728Z         "impl",
2026-06-21T22:29:41.2590837Z         "unit"
2026-06-21T22:29:41.2590937Z       ],
2026-06-21T22:29:41.2591029Z       "stages": {
2026-06-21T22:29:41.2591132Z         "doc": {
2026-06-21T22:29:41.2591242Z           "complete": false,
2026-06-21T22:29:41.2591358Z           "evidence": []
2026-06-21T22:29:41.2591455Z         },
2026-06-21T22:29:41.2591564Z         "impl": {
2026-06-21T22:29:41.2591680Z           "complete": true,
2026-06-21T22:29:41.2591775Z           "evidence": [
2026-06-21T22:29:41.2591874Z             {
2026-06-21T22:29:41.2592024Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2592132Z               "line": 276
2026-06-21T22:29:41.2592233Z             },
2026-06-21T22:29:41.2592333Z             {
2026-06-21T22:29:41.2592480Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2592586Z               "line": 1279
2026-06-21T22:29:41.2592696Z             },
2026-06-21T22:29:41.2592795Z             {
2026-06-21T22:29:41.2592935Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2593043Z               "line": 197
2026-06-21T22:29:41.2593148Z             },
2026-06-21T22:29:41.2593245Z             {
2026-06-21T22:29:41.2593372Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2593482Z               "line": 344
2026-06-21T22:29:41.2593574Z             },
2026-06-21T22:29:41.2593672Z             {
2026-06-21T22:29:41.2593810Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2593924Z               "line": 381
2026-06-21T22:29:41.2594027Z             },
2026-06-21T22:29:41.2594117Z             {
2026-06-21T22:29:41.2594247Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2594356Z               "line": 2075
2026-06-21T22:29:41.2594466Z             }
2026-06-21T22:29:41.2594562Z           ]
2026-06-21T22:29:41.2594666Z         },
2026-06-21T22:29:41.2594775Z         "int": {
2026-06-21T22:29:41.2594881Z           "complete": false,
2026-06-21T22:29:41.2594995Z           "evidence": []
2026-06-21T22:29:41.2595095Z         },
2026-06-21T22:29:41.2595201Z         "unit": {
2026-06-21T22:29:41.2595305Z           "complete": true,
2026-06-21T22:29:41.2595415Z           "evidence": [
2026-06-21T22:29:41.2595620Z             {
2026-06-21T22:29:41.2595749Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2595859Z               "line": 1158
2026-06-21T22:29:41.2595953Z             },
2026-06-21T22:29:41.2596054Z             {
2026-06-21T22:29:41.2596183Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2596287Z               "line": 10580
2026-06-21T22:29:41.2596384Z             }
2026-06-21T22:29:41.2596479Z           ]
2026-06-21T22:29:41.2596583Z         }
2026-06-21T22:29:41.2596682Z       }
2026-06-21T22:29:41.2596782Z     },
2026-06-21T22:29:41.2596876Z     {
2026-06-21T22:29:41.2596999Z       "id": "REQ-DOCS-1",
2026-06-21T22:29:41.2597338Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T22:29:41.2597448Z       "requiredStages": [
2026-06-21T22:29:41.2597552Z         "doc",
2026-06-21T22:29:41.2597637Z         "impl"
2026-06-21T22:29:41.2597739Z       ],
2026-06-21T22:29:41.2597853Z       "stages": {
2026-06-21T22:29:41.2597962Z         "doc": {
2026-06-21T22:29:41.2598073Z           "complete": true,
2026-06-21T22:29:41.2598177Z           "evidence": [
2026-06-21T22:29:41.2598282Z             {
2026-06-21T22:29:41.2598402Z               "path": "docs-site/src/index.md",
2026-06-21T22:29:41.2598510Z               "line": 50
2026-06-21T22:29:41.2598601Z             }
2026-06-21T22:29:41.2598697Z           ]
2026-06-21T22:29:41.2598787Z         },
2026-06-21T22:29:41.2598887Z         "impl": {
2026-06-21T22:29:41.2599074Z           "complete": true,
2026-06-21T22:29:41.2599182Z           "evidence": [
2026-06-21T22:29:41.2599282Z             {
2026-06-21T22:29:41.2599452Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T22:29:41.2599561Z               "line": 12
2026-06-21T22:29:41.2599666Z             },
2026-06-21T22:29:41.2599762Z             {
2026-06-21T22:29:41.2599894Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.2599991Z               "line": 14
2026-06-21T22:29:41.2600091Z             }
2026-06-21T22:29:41.2600190Z           ]
2026-06-21T22:29:41.2600291Z         },
2026-06-21T22:29:41.2600391Z         "int": {
2026-06-21T22:29:41.2600490Z           "complete": false,
2026-06-21T22:29:41.2600601Z           "evidence": []
2026-06-21T22:29:41.2600700Z         },
2026-06-21T22:29:41.2600805Z         "unit": {
2026-06-21T22:29:41.2600906Z           "complete": false,
2026-06-21T22:29:41.2601015Z           "evidence": []
2026-06-21T22:29:41.2601106Z         }
2026-06-21T22:29:41.2601207Z       }
2026-06-21T22:29:41.2601298Z     },
2026-06-21T22:29:41.2601382Z     {
2026-06-21T22:29:41.2601497Z       "id": "REQ-DOCS-2",
2026-06-21T22:29:41.2601687Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T22:29:41.2601807Z       "requiredStages": [
2026-06-21T22:29:41.2601904Z         "doc",
2026-06-21T22:29:41.2602006Z         "int"
2026-06-21T22:29:41.2602106Z       ],
2026-06-21T22:29:41.2602197Z       "stages": {
2026-06-21T22:29:41.2602308Z         "doc": {
2026-06-21T22:29:41.2602411Z           "complete": true,
2026-06-21T22:29:41.2602516Z           "evidence": [
2026-06-21T22:29:41.2602617Z             {
2026-06-21T22:29:41.2602808Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T22:29:41.2602917Z               "line": 3
2026-06-21T22:29:41.2603002Z             },
2026-06-21T22:29:41.2603103Z             {
2026-06-21T22:29:41.2603251Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T22:29:41.2603355Z               "line": 3
2026-06-21T22:29:41.2603461Z             },
2026-06-21T22:29:41.2603561Z             {
2026-06-21T22:29:41.2603718Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T22:29:41.2603824Z               "line": 3
2026-06-21T22:29:41.2603927Z             }
2026-06-21T22:29:41.2604028Z           ]
2026-06-21T22:29:41.2604110Z         },
2026-06-21T22:29:41.2604223Z         "impl": {
2026-06-21T22:29:41.2604332Z           "complete": false,
2026-06-21T22:29:41.2604531Z           "evidence": []
2026-06-21T22:29:41.2604635Z         },
2026-06-21T22:29:41.2604740Z         "int": {
2026-06-21T22:29:41.2604850Z           "complete": true,
2026-06-21T22:29:41.2604954Z           "evidence": [
2026-06-21T22:29:41.2605054Z             {
2026-06-21T22:29:41.2605189Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T22:29:41.2605297Z               "line": 14
2026-06-21T22:29:41.2605384Z             }
2026-06-21T22:29:41.2605489Z           ]
2026-06-21T22:29:41.2605574Z         },
2026-06-21T22:29:41.2605679Z         "unit": {
2026-06-21T22:29:41.2605794Z           "complete": false,
2026-06-21T22:29:41.2606004Z           "evidence": []
2026-06-21T22:29:41.2606108Z         }
2026-06-21T22:29:41.2606208Z       }
2026-06-21T22:29:41.2606309Z     },
2026-06-21T22:29:41.2606395Z     {
2026-06-21T22:29:41.2606509Z       "id": "REQ-DOCS-3",
2026-06-21T22:29:41.2606757Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T22:29:41.2606876Z       "requiredStages": [
2026-06-21T22:29:41.2606977Z         "doc"
2026-06-21T22:29:41.2607077Z       ],
2026-06-21T22:29:41.2607185Z       "stages": {
2026-06-21T22:29:41.2607271Z         "doc": {
2026-06-21T22:29:41.2607380Z           "complete": true,
2026-06-21T22:29:41.2607483Z           "evidence": [
2026-06-21T22:29:41.2607573Z             {
2026-06-21T22:29:41.2607708Z               "path": "docs-site/src/index.md",
2026-06-21T22:29:41.2607812Z               "line": 42
2026-06-21T22:29:41.2607912Z             }
2026-06-21T22:29:41.2608003Z           ]
2026-06-21T22:29:41.2608108Z         },
2026-06-21T22:29:41.2608232Z         "impl": {
2026-06-21T22:29:41.2608346Z           "complete": false,
2026-06-21T22:29:41.2608446Z           "evidence": []
2026-06-21T22:29:41.2608542Z         },
2026-06-21T22:29:41.2608642Z         "int": {
2026-06-21T22:29:41.2608747Z           "complete": false,
2026-06-21T22:29:41.2608856Z           "evidence": []
2026-06-21T22:29:41.2609038Z         },
2026-06-21T22:29:41.2609132Z         "unit": {
2026-06-21T22:29:41.2609248Z           "complete": false,
2026-06-21T22:29:41.2609352Z           "evidence": []
2026-06-21T22:29:41.2609481Z         }
2026-06-21T22:29:41.2609577Z       }
2026-06-21T22:29:41.2609681Z     },
2026-06-21T22:29:41.2609775Z     {
2026-06-21T22:29:41.2609885Z       "id": "REQ-DOCS-4",
2026-06-21T22:29:41.2610121Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T22:29:41.2610226Z       "requiredStages": [
2026-06-21T22:29:41.2610327Z         "doc",
2026-06-21T22:29:41.2610431Z         "impl",
2026-06-21T22:29:41.2610527Z         "unit"
2026-06-21T22:29:41.2610627Z       ],
2026-06-21T22:29:41.2610726Z       "stages": {
2026-06-21T22:29:41.2610832Z         "doc": {
2026-06-21T22:29:41.2610946Z           "complete": true,
2026-06-21T22:29:41.2611050Z           "evidence": [
2026-06-21T22:29:41.2611147Z             {
2026-06-21T22:29:41.2611284Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T22:29:41.2611394Z               "line": 35
2026-06-21T22:29:41.2611486Z             }
2026-06-21T22:29:41.2611590Z           ]
2026-06-21T22:29:41.2611671Z         },
2026-06-21T22:29:41.2611777Z         "impl": {
2026-06-21T22:29:41.2611876Z           "complete": true,
2026-06-21T22:29:41.2611986Z           "evidence": [
2026-06-21T22:29:41.2612087Z             {
2026-06-21T22:29:41.2612224Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2612329Z               "line": 746
2026-06-21T22:29:41.2612426Z             },
2026-06-21T22:29:41.2612520Z             {
2026-06-21T22:29:41.2612652Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.2612762Z               "line": 15
2026-06-21T22:29:41.2612868Z             }
2026-06-21T22:29:41.2612952Z           ]
2026-06-21T22:29:41.2613058Z         },
2026-06-21T22:29:41.2613153Z         "int": {
2026-06-21T22:29:41.2613257Z           "complete": false,
2026-06-21T22:29:41.2613463Z           "evidence": []
2026-06-21T22:29:41.2613558Z         },
2026-06-21T22:29:41.2613663Z         "unit": {
2026-06-21T22:29:41.2613773Z           "complete": true,
2026-06-21T22:29:41.2613873Z           "evidence": [
2026-06-21T22:29:41.2613963Z             {
2026-06-21T22:29:41.2614116Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2614225Z               "line": 1682
2026-06-21T22:29:41.2614322Z             }
2026-06-21T22:29:41.2614417Z           ]
2026-06-21T22:29:41.2614516Z         }
2026-06-21T22:29:41.2614612Z       }
2026-06-21T22:29:41.2614704Z     },
2026-06-21T22:29:41.2614802Z     {
2026-06-21T22:29:41.2614901Z       "id": "REQ-DOCS-5",
2026-06-21T22:29:41.2615338Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T22:29:41.2615448Z       "requiredStages": [
2026-06-21T22:29:41.2615552Z         "impl",
2026-06-21T22:29:41.2615653Z         "int"
2026-06-21T22:29:41.2615744Z       ],
2026-06-21T22:29:41.2615848Z       "stages": {
2026-06-21T22:29:41.2615954Z         "doc": {
2026-06-21T22:29:41.2616058Z           "complete": false,
2026-06-21T22:29:41.2616172Z           "evidence": []
2026-06-21T22:29:41.2616259Z         },
2026-06-21T22:29:41.2616363Z         "impl": {
2026-06-21T22:29:41.2616468Z           "complete": true,
2026-06-21T22:29:41.2616564Z           "evidence": [
2026-06-21T22:29:41.2616654Z             {
2026-06-21T22:29:41.2616802Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2616913Z               "line": 747
2026-06-21T22:29:41.2617011Z             },
2026-06-21T22:29:41.2617102Z             {
2026-06-21T22:29:41.2617237Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.2617350Z               "line": 113
2026-06-21T22:29:41.2617446Z             }
2026-06-21T22:29:41.2617547Z           ]
2026-06-21T22:29:41.2617651Z         },
2026-06-21T22:29:41.2617750Z         "int": {
2026-06-21T22:29:41.2617859Z           "complete": true,
2026-06-21T22:29:41.2617958Z           "evidence": [
2026-06-21T22:29:41.2618062Z             {
2026-06-21T22:29:41.2618186Z               "path": ".github/workflows/ci.yml",
2026-06-21T22:29:41.2618292Z               "line": 211
2026-06-21T22:29:41.2618391Z             },
2026-06-21T22:29:41.2618472Z             {
2026-06-21T22:29:41.2618616Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.2618720Z               "line": 1719
2026-06-21T22:29:41.2618821Z             }
2026-06-21T22:29:41.2618921Z           ]
2026-06-21T22:29:41.2619072Z         },
2026-06-21T22:29:41.2619183Z         "unit": {
2026-06-21T22:29:41.2619292Z           "complete": false,
2026-06-21T22:29:41.2619426Z           "evidence": []
2026-06-21T22:29:41.2619522Z         }
2026-06-21T22:29:41.2619621Z       }
2026-06-21T22:29:41.2619716Z     },
2026-06-21T22:29:41.2619813Z     {
2026-06-21T22:29:41.2619912Z       "id": "REQ-DOCS-6",
2026-06-21T22:29:41.2620265Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T22:29:41.2620373Z       "requiredStages": [
2026-06-21T22:29:41.2620469Z         "impl",
2026-06-21T22:29:41.2620567Z         "unit",
2026-06-21T22:29:41.2620666Z         "int"
2026-06-21T22:29:41.2620763Z       ],
2026-06-21T22:29:41.2620864Z       "stages": {
2026-06-21T22:29:41.2620962Z         "doc": {
2026-06-21T22:29:41.2621068Z           "complete": true,
2026-06-21T22:29:41.2621173Z           "evidence": [
2026-06-21T22:29:41.2621268Z             {
2026-06-21T22:29:41.2621421Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T22:29:41.2621526Z               "line": 4
2026-06-21T22:29:41.2621629Z             }
2026-06-21T22:29:41.2621726Z           ]
2026-06-21T22:29:41.2621826Z         },
2026-06-21T22:29:41.2621925Z         "impl": {
2026-06-21T22:29:41.2622041Z           "complete": true,
2026-06-21T22:29:41.2622141Z           "evidence": [
2026-06-21T22:29:41.2622245Z             {
2026-06-21T22:29:41.2622474Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2622584Z               "line": 5240
2026-06-21T22:29:41.2622685Z             }
2026-06-21T22:29:41.2622784Z           ]
2026-06-21T22:29:41.2622884Z         },
2026-06-21T22:29:41.2622976Z         "int": {
2026-06-21T22:29:41.2623085Z           "complete": true,
2026-06-21T22:29:41.2623198Z           "evidence": [
2026-06-21T22:29:41.2623303Z             {
2026-06-21T22:29:41.2623442Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T22:29:41.2623550Z               "line": 39
2026-06-21T22:29:41.2623646Z             }
2026-06-21T22:29:41.2623742Z           ]
2026-06-21T22:29:41.2623943Z         },
2026-06-21T22:29:41.2624047Z         "unit": {
2026-06-21T22:29:41.2624156Z           "complete": true,
2026-06-21T22:29:41.2624271Z           "evidence": [
2026-06-21T22:29:41.2624366Z             {
2026-06-21T22:29:41.2624504Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2624610Z               "line": 10742
2026-06-21T22:29:41.2624714Z             }
2026-06-21T22:29:41.2624814Z           ]
2026-06-21T22:29:41.2624906Z         }
2026-06-21T22:29:41.2625010Z       }
2026-06-21T22:29:41.2625105Z     },
2026-06-21T22:29:41.2625211Z     {
2026-06-21T22:29:41.2625321Z       "id": "REQ-ELEVATE-1",
2026-06-21T22:29:41.2628556Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T22:29:41.2628713Z       "requiredStages": [
2026-06-21T22:29:41.2628814Z         "doc",
2026-06-21T22:29:41.2628918Z         "impl",
2026-06-21T22:29:41.2629123Z         "unit"
2026-06-21T22:29:41.2629218Z       ],
2026-06-21T22:29:41.2629322Z       "stages": {
2026-06-21T22:29:41.2629424Z         "doc": {
2026-06-21T22:29:41.2629547Z           "complete": true,
2026-06-21T22:29:41.2629652Z           "evidence": [
2026-06-21T22:29:41.2629758Z             {
2026-06-21T22:29:41.2629876Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2629981Z               "line": 687
2026-06-21T22:29:41.2630087Z             }
2026-06-21T22:29:41.2630181Z           ]
2026-06-21T22:29:41.2630291Z         },
2026-06-21T22:29:41.2630392Z         "impl": {
2026-06-21T22:29:41.2630501Z           "complete": true,
2026-06-21T22:29:41.2630606Z           "evidence": [
2026-06-21T22:29:41.2630707Z             {
2026-06-21T22:29:41.2630839Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2630943Z               "line": 3572
2026-06-21T22:29:41.2631038Z             },
2026-06-21T22:29:41.2631137Z             {
2026-06-21T22:29:41.2631260Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2631366Z               "line": 3617
2026-06-21T22:29:41.2631470Z             },
2026-06-21T22:29:41.2631575Z             {
2026-06-21T22:29:41.2631705Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2631809Z               "line": 3679
2026-06-21T22:29:41.2631899Z             },
2026-06-21T22:29:41.2631991Z             {
2026-06-21T22:29:41.2632133Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.2632238Z               "line": 92
2026-06-21T22:29:41.2632476Z             },
2026-06-21T22:29:41.2632572Z             {
2026-06-21T22:29:41.2632701Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.2632810Z               "line": 148
2026-06-21T22:29:41.2632897Z             }
2026-06-21T22:29:41.2633001Z           ]
2026-06-21T22:29:41.2633097Z         },
2026-06-21T22:29:41.2633197Z         "int": {
2026-06-21T22:29:41.2633307Z           "complete": false,
2026-06-21T22:29:41.2633416Z           "evidence": []
2026-06-21T22:29:41.2633522Z         },
2026-06-21T22:29:41.2633622Z         "unit": {
2026-06-21T22:29:41.2633730Z           "complete": true,
2026-06-21T22:29:41.2633936Z           "evidence": [
2026-06-21T22:29:41.2634035Z             {
2026-06-21T22:29:41.2634163Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.2634260Z               "line": 442
2026-06-21T22:29:41.2634354Z             },
2026-06-21T22:29:41.2634454Z             {
2026-06-21T22:29:41.2634584Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.2634697Z               "line": 460
2026-06-21T22:29:41.2634793Z             }
2026-06-21T22:29:41.2634903Z           ]
2026-06-21T22:29:41.2635003Z         }
2026-06-21T22:29:41.2635103Z       }
2026-06-21T22:29:41.2635204Z     },
2026-06-21T22:29:41.2635298Z     {
2026-06-21T22:29:41.2635427Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T22:29:41.2637226Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T22:29:41.2637360Z       "requiredStages": [
2026-06-21T22:29:41.2637456Z         "doc",
2026-06-21T22:29:41.2637560Z         "impl",
2026-06-21T22:29:41.2637650Z         "unit"
2026-06-21T22:29:41.2637747Z       ],
2026-06-21T22:29:41.2637851Z       "stages": {
2026-06-21T22:29:41.2637960Z         "doc": {
2026-06-21T22:29:41.2638066Z           "complete": true,
2026-06-21T22:29:41.2638174Z           "evidence": [
2026-06-21T22:29:41.2638280Z             {
2026-06-21T22:29:41.2638386Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2638503Z               "line": 711
2026-06-21T22:29:41.2638604Z             }
2026-06-21T22:29:41.2638720Z           ]
2026-06-21T22:29:41.2638827Z         },
2026-06-21T22:29:41.2638926Z         "impl": {
2026-06-21T22:29:41.2639121Z           "complete": true,
2026-06-21T22:29:41.2639230Z           "evidence": [
2026-06-21T22:29:41.2639340Z             {
2026-06-21T22:29:41.2639478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2639587Z               "line": 1721
2026-06-21T22:29:41.2639693Z             },
2026-06-21T22:29:41.2639793Z             {
2026-06-21T22:29:41.2639917Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2640017Z               "line": 3125
2026-06-21T22:29:41.2640126Z             },
2026-06-21T22:29:41.2640222Z             {
2026-06-21T22:29:41.2640337Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2640436Z               "line": 3134
2026-06-21T22:29:41.2640522Z             }
2026-06-21T22:29:41.2640624Z           ]
2026-06-21T22:29:41.2640722Z         },
2026-06-21T22:29:41.2640832Z         "int": {
2026-06-21T22:29:41.2640953Z           "complete": false,
2026-06-21T22:29:41.2641056Z           "evidence": []
2026-06-21T22:29:41.2641157Z         },
2026-06-21T22:29:41.2641263Z         "unit": {
2026-06-21T22:29:41.2641370Z           "complete": true,
2026-06-21T22:29:41.2641479Z           "evidence": [
2026-06-21T22:29:41.2641575Z             {
2026-06-21T22:29:41.2641815Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2641916Z               "line": 7950
2026-06-21T22:29:41.2642021Z             },
2026-06-21T22:29:41.2642120Z             {
2026-06-21T22:29:41.2642246Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2642350Z               "line": 7991
2026-06-21T22:29:41.2642450Z             }
2026-06-21T22:29:41.2642546Z           ]
2026-06-21T22:29:41.2642641Z         }
2026-06-21T22:29:41.2642750Z       }
2026-06-21T22:29:41.2642847Z     },
2026-06-21T22:29:41.2642951Z     {
2026-06-21T22:29:41.2643065Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T22:29:41.2647800Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T22:29:41.2648120Z       "requiredStages": [
2026-06-21T22:29:41.2648215Z         "doc",
2026-06-21T22:29:41.2648321Z         "impl",
2026-06-21T22:29:41.2648406Z         "unit",
2026-06-21T22:29:41.2648511Z         "int"
2026-06-21T22:29:41.2648617Z       ],
2026-06-21T22:29:41.2648716Z       "stages": {
2026-06-21T22:29:41.2648820Z         "doc": {
2026-06-21T22:29:41.2648927Z           "complete": true,
2026-06-21T22:29:41.2649121Z           "evidence": [
2026-06-21T22:29:41.2649246Z             {
2026-06-21T22:29:41.2649373Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2649487Z               "line": 163
2026-06-21T22:29:41.2649587Z             }
2026-06-21T22:29:41.2649691Z           ]
2026-06-21T22:29:41.2649785Z         },
2026-06-21T22:29:41.2649890Z         "impl": {
2026-06-21T22:29:41.2649992Z           "complete": true,
2026-06-21T22:29:41.2650114Z           "evidence": [
2026-06-21T22:29:41.2650216Z             {
2026-06-21T22:29:41.2650372Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.2650482Z               "line": 105
2026-06-21T22:29:41.2650582Z             },
2026-06-21T22:29:41.2650682Z             {
2026-06-21T22:29:41.2650806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2650911Z               "line": 7219
2026-06-21T22:29:41.2651015Z             }
2026-06-21T22:29:41.2651116Z           ]
2026-06-21T22:29:41.2651212Z         },
2026-06-21T22:29:41.2651306Z         "int": {
2026-06-21T22:29:41.2651431Z           "complete": true,
2026-06-21T22:29:41.2651536Z           "evidence": [
2026-06-21T22:29:41.2651640Z             {
2026-06-21T22:29:41.2651761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2651861Z               "line": 7384
2026-06-21T22:29:41.2651968Z             }
2026-06-21T22:29:41.2652068Z           ]
2026-06-21T22:29:41.2652276Z         },
2026-06-21T22:29:41.2652380Z         "unit": {
2026-06-21T22:29:41.2652491Z           "complete": true,
2026-06-21T22:29:41.2652605Z           "evidence": [
2026-06-21T22:29:41.2652705Z             {
2026-06-21T22:29:41.2652834Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2652938Z               "line": 7355
2026-06-21T22:29:41.2653044Z             }
2026-06-21T22:29:41.2653139Z           ]
2026-06-21T22:29:41.2653239Z         }
2026-06-21T22:29:41.2653339Z       }
2026-06-21T22:29:41.2653426Z     },
2026-06-21T22:29:41.2653535Z     {
2026-06-21T22:29:41.2653663Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T22:29:41.2655113Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T22:29:41.2655235Z       "requiredStages": [
2026-06-21T22:29:41.2655341Z         "impl",
2026-06-21T22:29:41.2655446Z         "unit"
2026-06-21T22:29:41.2655545Z       ],
2026-06-21T22:29:41.2655652Z       "stages": {
2026-06-21T22:29:41.2655742Z         "doc": {
2026-06-21T22:29:41.2655856Z           "complete": false,
2026-06-21T22:29:41.2655962Z           "evidence": []
2026-06-21T22:29:41.2656047Z         },
2026-06-21T22:29:41.2656151Z         "impl": {
2026-06-21T22:29:41.2656262Z           "complete": true,
2026-06-21T22:29:41.2656390Z           "evidence": [
2026-06-21T22:29:41.2656485Z             {
2026-06-21T22:29:41.2656620Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2656733Z               "line": 3165
2026-06-21T22:29:41.2656828Z             }
2026-06-21T22:29:41.2656935Z           ]
2026-06-21T22:29:41.2657028Z         },
2026-06-21T22:29:41.2657152Z         "int": {
2026-06-21T22:29:41.2657257Z           "complete": false,
2026-06-21T22:29:41.2657360Z           "evidence": []
2026-06-21T22:29:41.2657459Z         },
2026-06-21T22:29:41.2657565Z         "unit": {
2026-06-21T22:29:41.2657675Z           "complete": true,
2026-06-21T22:29:41.2657778Z           "evidence": [
2026-06-21T22:29:41.2657880Z             {
2026-06-21T22:29:41.2658003Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2658107Z               "line": 7331
2026-06-21T22:29:41.2658213Z             }
2026-06-21T22:29:41.2658308Z           ]
2026-06-21T22:29:41.2658403Z         }
2026-06-21T22:29:41.2658500Z       }
2026-06-21T22:29:41.2658609Z     },
2026-06-21T22:29:41.2658709Z     {
2026-06-21T22:29:41.2658809Z       "id": "REQ-EP-1",
2026-06-21T22:29:41.2659051Z       "title": "Day-one endpoint types; open type system",
2026-06-21T22:29:41.2659163Z       "requiredStages": [
2026-06-21T22:29:41.2659262Z         "impl",
2026-06-21T22:29:41.2659371Z         "unit"
2026-06-21T22:29:41.2659473Z       ],
2026-06-21T22:29:41.2659572Z       "stages": {
2026-06-21T22:29:41.2659672Z         "doc": {
2026-06-21T22:29:41.2659793Z           "complete": false,
2026-06-21T22:29:41.2659901Z           "evidence": []
2026-06-21T22:29:41.2660005Z         },
2026-06-21T22:29:41.2660105Z         "impl": {
2026-06-21T22:29:41.2660213Z           "complete": true,
2026-06-21T22:29:41.2660316Z           "evidence": [
2026-06-21T22:29:41.2660417Z             {
2026-06-21T22:29:41.2660575Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2660679Z               "line": 77
2026-06-21T22:29:41.2660785Z             },
2026-06-21T22:29:41.2660881Z             {
2026-06-21T22:29:41.2661022Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2661129Z               "line": 94
2026-06-21T22:29:41.2661238Z             }
2026-06-21T22:29:41.2661347Z           ]
2026-06-21T22:29:41.2661434Z         },
2026-06-21T22:29:41.2661538Z         "int": {
2026-06-21T22:29:41.2661753Z           "complete": false,
2026-06-21T22:29:41.2661861Z           "evidence": []
2026-06-21T22:29:41.2661957Z         },
2026-06-21T22:29:41.2662063Z         "unit": {
2026-06-21T22:29:41.2662171Z           "complete": true,
2026-06-21T22:29:41.2662282Z           "evidence": [
2026-06-21T22:29:41.2662383Z             {
2026-06-21T22:29:41.2662524Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2662628Z               "line": 161
2026-06-21T22:29:41.2662729Z             },
2026-06-21T22:29:41.2662831Z             {
2026-06-21T22:29:41.2662970Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2663179Z               "line": 178
2026-06-21T22:29:41.2663284Z             }
2026-06-21T22:29:41.2663380Z           ]
2026-06-21T22:29:41.2663484Z         }
2026-06-21T22:29:41.2663574Z       }
2026-06-21T22:29:41.2663681Z     },
2026-06-21T22:29:41.2663781Z     {
2026-06-21T22:29:41.2663885Z       "id": "REQ-EP-2",
2026-06-21T22:29:41.2664090Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T22:29:41.2664200Z       "requiredStages": [
2026-06-21T22:29:41.2664306Z         "impl",
2026-06-21T22:29:41.2664405Z         "unit"
2026-06-21T22:29:41.2664500Z       ],
2026-06-21T22:29:41.2664601Z       "stages": {
2026-06-21T22:29:41.2664691Z         "doc": {
2026-06-21T22:29:41.2664810Z           "complete": false,
2026-06-21T22:29:41.2664906Z           "evidence": []
2026-06-21T22:29:41.2665010Z         },
2026-06-21T22:29:41.2665110Z         "impl": {
2026-06-21T22:29:41.2665231Z           "complete": true,
2026-06-21T22:29:41.2665339Z           "evidence": [
2026-06-21T22:29:41.2665453Z             {
2026-06-21T22:29:41.2665596Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2665705Z               "line": 114
2026-06-21T22:29:41.2665800Z             },
2026-06-21T22:29:41.2665897Z             {
2026-06-21T22:29:41.2666044Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2666159Z               "line": 131
2026-06-21T22:29:41.2666259Z             },
2026-06-21T22:29:41.2666359Z             {
2026-06-21T22:29:41.2666497Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2666612Z               "line": 138
2026-06-21T22:29:41.2666706Z             }
2026-06-21T22:29:41.2666803Z           ]
2026-06-21T22:29:41.2666908Z         },
2026-06-21T22:29:41.2667012Z         "int": {
2026-06-21T22:29:41.2667132Z           "complete": false,
2026-06-21T22:29:41.2667237Z           "evidence": []
2026-06-21T22:29:41.2667341Z         },
2026-06-21T22:29:41.2667437Z         "unit": {
2026-06-21T22:29:41.2667561Z           "complete": true,
2026-06-21T22:29:41.2667674Z           "evidence": [
2026-06-21T22:29:41.2667774Z             {
2026-06-21T22:29:41.2667920Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2668028Z               "line": 190
2026-06-21T22:29:41.2668130Z             },
2026-06-21T22:29:41.2668235Z             {
2026-06-21T22:29:41.2668382Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2668497Z               "line": 208
2026-06-21T22:29:41.2668597Z             },
2026-06-21T22:29:41.2668706Z             {
2026-06-21T22:29:41.2668845Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T22:29:41.2669026Z               "line": 221
2026-06-21T22:29:41.2669117Z             }
2026-06-21T22:29:41.2669207Z           ]
2026-06-21T22:29:41.2669316Z         }
2026-06-21T22:29:41.2669417Z       }
2026-06-21T22:29:41.2669512Z     },
2026-06-21T22:29:41.2669612Z     {
2026-06-21T22:29:41.2669714Z       "id": "REQ-EP-3",
2026-06-21T22:29:41.2669932Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T22:29:41.2670052Z       "requiredStages": [
2026-06-21T22:29:41.2670155Z         "impl",
2026-06-21T22:29:41.2670256Z         "unit"
2026-06-21T22:29:41.2670362Z       ],
2026-06-21T22:29:41.2670461Z       "stages": {
2026-06-21T22:29:41.2670675Z         "doc": {
2026-06-21T22:29:41.2670787Z           "complete": false,
2026-06-21T22:29:41.2670891Z           "evidence": []
2026-06-21T22:29:41.2670992Z         },
2026-06-21T22:29:41.2671097Z         "impl": {
2026-06-21T22:29:41.2671215Z           "complete": true,
2026-06-21T22:29:41.2674265Z           "evidence": [
2026-06-21T22:29:41.2674402Z             {
2026-06-21T22:29:41.2674561Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2674679Z               "line": 31
2026-06-21T22:29:41.2674783Z             },
2026-06-21T22:29:41.2674880Z             {
2026-06-21T22:29:41.2675036Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2675293Z               "line": 49
2026-06-21T22:29:41.2675394Z             }
2026-06-21T22:29:41.2675491Z           ]
2026-06-21T22:29:41.2675589Z         },
2026-06-21T22:29:41.2675694Z         "int": {
2026-06-21T22:29:41.2675805Z           "complete": false,
2026-06-21T22:29:41.2675923Z           "evidence": []
2026-06-21T22:29:41.2676022Z         },
2026-06-21T22:29:41.2676128Z         "unit": {
2026-06-21T22:29:41.2676233Z           "complete": true,
2026-06-21T22:29:41.2676347Z           "evidence": [
2026-06-21T22:29:41.2676452Z             {
2026-06-21T22:29:41.2676599Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2676709Z               "line": 156
2026-06-21T22:29:41.2676810Z             },
2026-06-21T22:29:41.2676905Z             {
2026-06-21T22:29:41.2677043Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2677148Z               "line": 164
2026-06-21T22:29:41.2677252Z             },
2026-06-21T22:29:41.2677353Z             {
2026-06-21T22:29:41.2677491Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2677596Z               "line": 177
2026-06-21T22:29:41.2677697Z             },
2026-06-21T22:29:41.2677797Z             {
2026-06-21T22:29:41.2677944Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2678046Z               "line": 200
2026-06-21T22:29:41.2678139Z             },
2026-06-21T22:29:41.2678239Z             {
2026-06-21T22:29:41.2678377Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2678480Z               "line": 216
2026-06-21T22:29:41.2678570Z             },
2026-06-21T22:29:41.2678680Z             {
2026-06-21T22:29:41.2678823Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T22:29:41.2678927Z               "line": 233
2026-06-21T22:29:41.2679114Z             }
2026-06-21T22:29:41.2679209Z           ]
2026-06-21T22:29:41.2679305Z         }
2026-06-21T22:29:41.2679405Z       }
2026-06-21T22:29:41.2679533Z     },
2026-06-21T22:29:41.2679630Z     {
2026-06-21T22:29:41.2679744Z       "id": "REQ-EP-4",
2026-06-21T22:29:41.2679915Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T22:29:41.2680029Z       "requiredStages": [
2026-06-21T22:29:41.2680134Z         "impl",
2026-06-21T22:29:41.2680240Z         "unit"
2026-06-21T22:29:41.2680344Z       ],
2026-06-21T22:29:41.2680449Z       "stages": {
2026-06-21T22:29:41.2680550Z         "doc": {
2026-06-21T22:29:41.2680659Z           "complete": false,
2026-06-21T22:29:41.2680763Z           "evidence": []
2026-06-21T22:29:41.2680869Z         },
2026-06-21T22:29:41.2680965Z         "impl": {
2026-06-21T22:29:41.2681073Z           "complete": true,
2026-06-21T22:29:41.2681182Z           "evidence": [
2026-06-21T22:29:41.2681282Z             {
2026-06-21T22:29:41.2681418Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2681523Z               "line": 778
2026-06-21T22:29:41.2681624Z             },
2026-06-21T22:29:41.2681728Z             {
2026-06-21T22:29:41.2681877Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2681991Z               "line": 1205
2026-06-21T22:29:41.2682095Z             },
2026-06-21T22:29:41.2682196Z             {
2026-06-21T22:29:41.2682330Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2682544Z               "line": 2387
2026-06-21T22:29:41.2682648Z             },
2026-06-21T22:29:41.2682748Z             {
2026-06-21T22:29:41.2682878Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2682986Z               "line": 125
2026-06-21T22:29:41.2683092Z             },
2026-06-21T22:29:41.2683193Z             {
2026-06-21T22:29:41.2683335Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2683441Z               "line": 715
2026-06-21T22:29:41.2683536Z             },
2026-06-21T22:29:41.2683639Z             {
2026-06-21T22:29:41.2683768Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2683970Z               "line": 864
2026-06-21T22:29:41.2684070Z             },
2026-06-21T22:29:41.2684172Z             {
2026-06-21T22:29:41.2684323Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2684424Z               "line": 321
2026-06-21T22:29:41.2684529Z             },
2026-06-21T22:29:41.2684637Z             {
2026-06-21T22:29:41.2684777Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2684882Z               "line": 508
2026-06-21T22:29:41.2684986Z             },
2026-06-21T22:29:41.2685087Z             {
2026-06-21T22:29:41.2685220Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2685325Z               "line": 1334
2026-06-21T22:29:41.2685421Z             }
2026-06-21T22:29:41.2685515Z           ]
2026-06-21T22:29:41.2685615Z         },
2026-06-21T22:29:41.2685726Z         "int": {
2026-06-21T22:29:41.2685844Z           "complete": false,
2026-06-21T22:29:41.2685954Z           "evidence": []
2026-06-21T22:29:41.2686060Z         },
2026-06-21T22:29:41.2686164Z         "unit": {
2026-06-21T22:29:41.2686284Z           "complete": true,
2026-06-21T22:29:41.2686389Z           "evidence": [
2026-06-21T22:29:41.2686488Z             {
2026-06-21T22:29:41.2686673Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2686789Z               "line": 955
2026-06-21T22:29:41.2686892Z             },
2026-06-21T22:29:41.2686993Z             {
2026-06-21T22:29:41.2687136Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T22:29:41.2687240Z               "line": 76
2026-06-21T22:29:41.2687342Z             },
2026-06-21T22:29:41.2687442Z             {
2026-06-21T22:29:41.2687589Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T22:29:41.2687694Z               "line": 147
2026-06-21T22:29:41.2687789Z             }
2026-06-21T22:29:41.2687894Z           ]
2026-06-21T22:29:41.2687995Z         }
2026-06-21T22:29:41.2688080Z       }
2026-06-21T22:29:41.2688189Z     },
2026-06-21T22:29:41.2688291Z     {
2026-06-21T22:29:41.2688394Z       "id": "REQ-EP-5",
2026-06-21T22:29:41.2689182Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T22:29:41.2689312Z       "requiredStages": [
2026-06-21T22:29:41.2689416Z         "impl",
2026-06-21T22:29:41.2689521Z         "unit",
2026-06-21T22:29:41.2689622Z         "int"
2026-06-21T22:29:41.2689721Z       ],
2026-06-21T22:29:41.2689826Z       "stages": {
2026-06-21T22:29:41.2689927Z         "doc": {
2026-06-21T22:29:41.2690045Z           "complete": false,
2026-06-21T22:29:41.2690161Z           "evidence": []
2026-06-21T22:29:41.2690260Z         },
2026-06-21T22:29:41.2690365Z         "impl": {
2026-06-21T22:29:41.2690475Z           "complete": true,
2026-06-21T22:29:41.2690575Z           "evidence": [
2026-06-21T22:29:41.2690680Z             {
2026-06-21T22:29:41.2690839Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.2690942Z               "line": 367
2026-06-21T22:29:41.2691047Z             },
2026-06-21T22:29:41.2691148Z             {
2026-06-21T22:29:41.2691295Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2691516Z               "line": 18
2026-06-21T22:29:41.2691604Z             },
2026-06-21T22:29:41.2691703Z             {
2026-06-21T22:29:41.2691847Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2691950Z               "line": 63
2026-06-21T22:29:41.2692059Z             },
2026-06-21T22:29:41.2692160Z             {
2026-06-21T22:29:41.2692307Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2692407Z               "line": 92
2026-06-21T22:29:41.2692513Z             },
2026-06-21T22:29:41.2692617Z             {
2026-06-21T22:29:41.2692757Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2692965Z               "line": 167
2026-06-21T22:29:41.2693061Z             },
2026-06-21T22:29:41.2693166Z             {
2026-06-21T22:29:41.2693299Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2693401Z               "line": 179
2026-06-21T22:29:41.2693523Z             },
2026-06-21T22:29:41.2693623Z             {
2026-06-21T22:29:41.2693767Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.2693866Z               "line": 114
2026-06-21T22:29:41.2693972Z             },
2026-06-21T22:29:41.2694068Z             {
2026-06-21T22:29:41.2694214Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2694328Z               "line": 22
2026-06-21T22:29:41.2694428Z             },
2026-06-21T22:29:41.2694536Z             {
2026-06-21T22:29:41.2694669Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2694775Z               "line": 145
2026-06-21T22:29:41.2694878Z             },
2026-06-21T22:29:41.2694989Z             {
2026-06-21T22:29:41.2695132Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2695241Z               "line": 174
2026-06-21T22:29:41.2695352Z             },
2026-06-21T22:29:41.2695451Z             {
2026-06-21T22:29:41.2695599Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2695709Z               "line": 196
2026-06-21T22:29:41.2695814Z             },
2026-06-21T22:29:41.2695923Z             {
2026-06-21T22:29:41.2696057Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2696166Z               "line": 221
2026-06-21T22:29:41.2696248Z             },
2026-06-21T22:29:41.2696348Z             {
2026-06-21T22:29:41.2696486Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2696592Z               "line": 247
2026-06-21T22:29:41.2696696Z             },
2026-06-21T22:29:41.2696791Z             {
2026-06-21T22:29:41.2696945Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2697053Z               "line": 270
2026-06-21T22:29:41.2697157Z             },
2026-06-21T22:29:41.2697262Z             {
2026-06-21T22:29:41.2697405Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2697509Z               "line": 104
2026-06-21T22:29:41.2697616Z             },
2026-06-21T22:29:41.2697720Z             {
2026-06-21T22:29:41.2697834Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2697940Z               "line": 6068
2026-06-21T22:29:41.2698044Z             },
2026-06-21T22:29:41.2698139Z             {
2026-06-21T22:29:41.2698264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2698373Z               "line": 6202
2026-06-21T22:29:41.2698473Z             },
2026-06-21T22:29:41.2698574Z             {
2026-06-21T22:29:41.2698702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2698808Z               "line": 6368
2026-06-21T22:29:41.2698917Z             },
2026-06-21T22:29:41.2699098Z             {
2026-06-21T22:29:41.2699223Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2699335Z               "line": 6896
2026-06-21T22:29:41.2699425Z             }
2026-06-21T22:29:41.2699531Z           ]
2026-06-21T22:29:41.2699638Z         },
2026-06-21T22:29:41.2699839Z         "int": {
2026-06-21T22:29:41.2699957Z           "complete": true,
2026-06-21T22:29:41.2700067Z           "evidence": [
2026-06-21T22:29:41.2700168Z             {
2026-06-21T22:29:41.2700310Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T22:29:41.2700411Z               "line": 16
2026-06-21T22:29:41.2700506Z             },
2026-06-21T22:29:41.2700601Z             {
2026-06-21T22:29:41.2700735Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T22:29:41.2700840Z               "line": 15
2026-06-21T22:29:41.2700944Z             }
2026-06-21T22:29:41.2701040Z           ]
2026-06-21T22:29:41.2701140Z         },
2026-06-21T22:29:41.2701374Z         "unit": {
2026-06-21T22:29:41.2701488Z           "complete": true,
2026-06-21T22:29:41.2701597Z           "evidence": [
2026-06-21T22:29:41.2701694Z             {
2026-06-21T22:29:41.2701840Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2701941Z               "line": 246
2026-06-21T22:29:41.2702047Z             },
2026-06-21T22:29:41.2702141Z             {
2026-06-21T22:29:41.2702287Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2702393Z               "line": 306
2026-06-21T22:29:41.2702495Z             },
2026-06-21T22:29:41.2702595Z             {
2026-06-21T22:29:41.2702730Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T22:29:41.2702834Z               "line": 363
2026-06-21T22:29:41.2702943Z             },
2026-06-21T22:29:41.2703040Z             {
2026-06-21T22:29:41.2703187Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2703292Z               "line": 286
2026-06-21T22:29:41.2703392Z             },
2026-06-21T22:29:41.2703492Z             {
2026-06-21T22:29:41.2703631Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.2703745Z               "line": 338
2026-06-21T22:29:41.2703845Z             },
2026-06-21T22:29:41.2703946Z             {
2026-06-21T22:29:41.2704097Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2704202Z               "line": 783
2026-06-21T22:29:41.2704309Z             },
2026-06-21T22:29:41.2704407Z             {
2026-06-21T22:29:41.2704537Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2704633Z               "line": 8751
2026-06-21T22:29:41.2704736Z             },
2026-06-21T22:29:41.2704835Z             {
2026-06-21T22:29:41.2704964Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2705072Z               "line": 8904
2026-06-21T22:29:41.2705167Z             },
2026-06-21T22:29:41.2705267Z             {
2026-06-21T22:29:41.2705382Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2705506Z               "line": 9493
2026-06-21T22:29:41.2705607Z             },
2026-06-21T22:29:41.2705711Z             {
2026-06-21T22:29:41.2705839Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2705950Z               "line": 9609
2026-06-21T22:29:41.2706054Z             }
2026-06-21T22:29:41.2706154Z           ]
2026-06-21T22:29:41.2706264Z         }
2026-06-21T22:29:41.2706360Z       }
2026-06-21T22:29:41.2706464Z     },
2026-06-21T22:29:41.2706551Z     {
2026-06-21T22:29:41.2706655Z       "id": "REQ-EP-6",
2026-06-21T22:29:41.2708166Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T22:29:41.2708299Z       "requiredStages": [
2026-06-21T22:29:41.2708404Z         "doc",
2026-06-21T22:29:41.2708500Z         "impl",
2026-06-21T22:29:41.2708609Z         "unit"
2026-06-21T22:29:41.2708709Z       ],
2026-06-21T22:29:41.2708910Z       "stages": {
2026-06-21T22:29:41.2710024Z         "doc": {
2026-06-21T22:29:41.2710179Z           "complete": true,
2026-06-21T22:29:41.2710332Z           "evidence": [
2026-06-21T22:29:41.2710471Z             {
2026-06-21T22:29:41.2710627Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2710780Z               "line": 227
2026-06-21T22:29:41.2710923Z             }
2026-06-21T22:29:41.2711062Z           ]
2026-06-21T22:29:41.2711194Z         },
2026-06-21T22:29:41.2711343Z         "impl": {
2026-06-21T22:29:41.2711495Z           "complete": true,
2026-06-21T22:29:41.2711634Z           "evidence": [
2026-06-21T22:29:41.2711787Z             {
2026-06-21T22:29:41.2712090Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2712196Z               "line": 212
2026-06-21T22:29:41.2712293Z             }
2026-06-21T22:29:41.2712396Z           ]
2026-06-21T22:29:41.2712496Z         },
2026-06-21T22:29:41.2712593Z         "int": {
2026-06-21T22:29:41.2712706Z           "complete": true,
2026-06-21T22:29:41.2712819Z           "evidence": [
2026-06-21T22:29:41.2712920Z             {
2026-06-21T22:29:41.2713065Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T22:29:41.2713179Z               "line": 18
2026-06-21T22:29:41.2713276Z             }
2026-06-21T22:29:41.2713375Z           ]
2026-06-21T22:29:41.2713480Z         },
2026-06-21T22:29:41.2713577Z         "unit": {
2026-06-21T22:29:41.2713690Z           "complete": true,
2026-06-21T22:29:41.2713799Z           "evidence": [
2026-06-21T22:29:41.2713901Z             {
2026-06-21T22:29:41.2714061Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.2714172Z               "line": 556
2026-06-21T22:29:41.2714281Z             },
2026-06-21T22:29:41.2714371Z             {
2026-06-21T22:29:41.2714516Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2714619Z               "line": 904
2026-06-21T22:29:41.2714724Z             }
2026-06-21T22:29:41.2714826Z           ]
2026-06-21T22:29:41.2714920Z         }
2026-06-21T22:29:41.2715025Z       }
2026-06-21T22:29:41.2715126Z     },
2026-06-21T22:29:41.2715226Z     {
2026-06-21T22:29:41.2715329Z       "id": "REQ-EP-7",
2026-06-21T22:29:41.2717044Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T22:29:41.2717177Z       "requiredStages": [
2026-06-21T22:29:41.2717277Z         "doc",
2026-06-21T22:29:41.2717383Z         "impl",
2026-06-21T22:29:41.2717491Z         "unit"
2026-06-21T22:29:41.2717582Z       ],
2026-06-21T22:29:41.2717693Z       "stages": {
2026-06-21T22:29:41.2717788Z         "doc": {
2026-06-21T22:29:41.2717902Z           "complete": true,
2026-06-21T22:29:41.2717993Z           "evidence": [
2026-06-21T22:29:41.2718093Z             {
2026-06-21T22:29:41.2718206Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.2718315Z               "line": 490
2026-06-21T22:29:41.2718421Z             }
2026-06-21T22:29:41.2718521Z           ]
2026-06-21T22:29:41.2718625Z         },
2026-06-21T22:29:41.2718722Z         "impl": {
2026-06-21T22:29:41.2718831Z           "complete": true,
2026-06-21T22:29:41.2719027Z           "evidence": [
2026-06-21T22:29:41.2719160Z             {
2026-06-21T22:29:41.2719313Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.2719436Z               "line": 505
2026-06-21T22:29:41.2719545Z             },
2026-06-21T22:29:41.2719642Z             {
2026-06-21T22:29:41.2719779Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.2719889Z               "line": 87
2026-06-21T22:29:41.2720112Z             },
2026-06-21T22:29:41.2720218Z             {
2026-06-21T22:29:41.2720362Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2720474Z               "line": 81
2026-06-21T22:29:41.2720570Z             },
2026-06-21T22:29:41.2720674Z             {
2026-06-21T22:29:41.2720829Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2720925Z               "line": 166
2026-06-21T22:29:41.2721027Z             },
2026-06-21T22:29:41.2721125Z             {
2026-06-21T22:29:41.2721254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2721360Z               "line": 1645
2026-06-21T22:29:41.2721560Z             }
2026-06-21T22:29:41.2721664Z           ]
2026-06-21T22:29:41.2721764Z         },
2026-06-21T22:29:41.2721865Z         "int": {
2026-06-21T22:29:41.2721974Z           "complete": false,
2026-06-21T22:29:41.2722083Z           "evidence": []
2026-06-21T22:29:41.2722170Z         },
2026-06-21T22:29:41.2722280Z         "unit": {
2026-06-21T22:29:41.2722389Z           "complete": true,
2026-06-21T22:29:41.2722495Z           "evidence": [
2026-06-21T22:29:41.2722595Z             {
2026-06-21T22:29:41.2722727Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.2722833Z               "line": 623
2026-06-21T22:29:41.2722933Z             },
2026-06-21T22:29:41.2723028Z             {
2026-06-21T22:29:41.2723167Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2723271Z               "line": 212
2026-06-21T22:29:41.2723370Z             },
2026-06-21T22:29:41.2723461Z             {
2026-06-21T22:29:41.2723598Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.2723706Z               "line": 307
2026-06-21T22:29:41.2723816Z             },
2026-06-21T22:29:41.2723917Z             {
2026-06-21T22:29:41.2724045Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2724160Z               "line": 7724
2026-06-21T22:29:41.2724265Z             },
2026-06-21T22:29:41.2724359Z             {
2026-06-21T22:29:41.2724489Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2724593Z               "line": 7751
2026-06-21T22:29:41.2724688Z             }
2026-06-21T22:29:41.2724785Z           ]
2026-06-21T22:29:41.2724889Z         }
2026-06-21T22:29:41.2724989Z       }
2026-06-21T22:29:41.2725086Z     },
2026-06-21T22:29:41.2725175Z     {
2026-06-21T22:29:41.2725284Z       "id": "REQ-FRONT-1",
2026-06-21T22:29:41.2725485Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T22:29:41.2725599Z       "requiredStages": [],
2026-06-21T22:29:41.2725705Z       "stages": {
2026-06-21T22:29:41.2725805Z         "doc": {
2026-06-21T22:29:41.2725918Z           "complete": false,
2026-06-21T22:29:41.2726022Z           "evidence": []
2026-06-21T22:29:41.2726122Z         },
2026-06-21T22:29:41.2726226Z         "impl": {
2026-06-21T22:29:41.2726335Z           "complete": false,
2026-06-21T22:29:41.2726455Z           "evidence": []
2026-06-21T22:29:41.2726549Z         },
2026-06-21T22:29:41.2726650Z         "int": {
2026-06-21T22:29:41.2726755Z           "complete": false,
2026-06-21T22:29:41.2726869Z           "evidence": []
2026-06-21T22:29:41.2726970Z         },
2026-06-21T22:29:41.2727070Z         "unit": {
2026-06-21T22:29:41.2727179Z           "complete": false,
2026-06-21T22:29:41.2727285Z           "evidence": []
2026-06-21T22:29:41.2727384Z         }
2026-06-21T22:29:41.2727484Z       }
2026-06-21T22:29:41.2727584Z     },
2026-06-21T22:29:41.2727690Z     {
2026-06-21T22:29:41.2727813Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T22:29:41.2733260Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T22:29:41.2733646Z       "requiredStages": [
2026-06-21T22:29:41.2733742Z         "int"
2026-06-21T22:29:41.2733845Z       ],
2026-06-21T22:29:41.2733944Z       "stages": {
2026-06-21T22:29:41.2734045Z         "doc": {
2026-06-21T22:29:41.2734158Z           "complete": false,
2026-06-21T22:29:41.2734290Z           "evidence": []
2026-06-21T22:29:41.2734396Z         },
2026-06-21T22:29:41.2734496Z         "impl": {
2026-06-21T22:29:41.2734600Z           "complete": false,
2026-06-21T22:29:41.2734711Z           "evidence": []
2026-06-21T22:29:41.2734816Z         },
2026-06-21T22:29:41.2734915Z         "int": {
2026-06-21T22:29:41.2735026Z           "complete": true,
2026-06-21T22:29:41.2735149Z           "evidence": [
2026-06-21T22:29:41.2735263Z             {
2026-06-21T22:29:41.2735416Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T22:29:41.2735511Z               "line": 300
2026-06-21T22:29:41.2735617Z             }
2026-06-21T22:29:41.2735712Z           ]
2026-06-21T22:29:41.2735812Z         },
2026-06-21T22:29:41.2735912Z         "unit": {
2026-06-21T22:29:41.2736022Z           "complete": false,
2026-06-21T22:29:41.2736136Z           "evidence": []
2026-06-21T22:29:41.2736232Z         }
2026-06-21T22:29:41.2736328Z       }
2026-06-21T22:29:41.2736426Z     },
2026-06-21T22:29:41.2736520Z     {
2026-06-21T22:29:41.2736645Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T22:29:41.2739288Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T22:29:41.2739469Z       "requiredStages": [
2026-06-21T22:29:41.2739575Z         "impl",
2026-06-21T22:29:41.2739674Z         "unit",
2026-06-21T22:29:41.2739774Z         "int"
2026-06-21T22:29:41.2739875Z       ],
2026-06-21T22:29:41.2739979Z       "stages": {
2026-06-21T22:29:41.2740075Z         "doc": {
2026-06-21T22:29:41.2740322Z           "complete": false,
2026-06-21T22:29:41.2740428Z           "evidence": []
2026-06-21T22:29:41.2740523Z         },
2026-06-21T22:29:41.2740632Z         "impl": {
2026-06-21T22:29:41.2740748Z           "complete": true,
2026-06-21T22:29:41.2740861Z           "evidence": [
2026-06-21T22:29:41.2740957Z             {
2026-06-21T22:29:41.2741101Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2741209Z               "line": 257
2026-06-21T22:29:41.2741305Z             }
2026-06-21T22:29:41.2741407Z           ]
2026-06-21T22:29:41.2741505Z         },
2026-06-21T22:29:41.2741609Z         "int": {
2026-06-21T22:29:41.2741709Z           "complete": true,
2026-06-21T22:29:41.2741921Z           "evidence": [
2026-06-21T22:29:41.2742026Z             {
2026-06-21T22:29:41.2742184Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T22:29:41.2742293Z               "line": 93
2026-06-21T22:29:41.2742394Z             }
2026-06-21T22:29:41.2742494Z           ]
2026-06-21T22:29:41.2742588Z         },
2026-06-21T22:29:41.2742681Z         "unit": {
2026-06-21T22:29:41.2742785Z           "complete": true,
2026-06-21T22:29:41.2742889Z           "evidence": [
2026-06-21T22:29:41.2742991Z             {
2026-06-21T22:29:41.2743118Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2743227Z               "line": 802
2026-06-21T22:29:41.2743324Z             },
2026-06-21T22:29:41.2743428Z             {
2026-06-21T22:29:41.2743566Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2743672Z               "line": 824
2026-06-21T22:29:41.2743776Z             },
2026-06-21T22:29:41.2743862Z             {
2026-06-21T22:29:41.2744011Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2744114Z               "line": 855
2026-06-21T22:29:41.2744211Z             }
2026-06-21T22:29:41.2744311Z           ]
2026-06-21T22:29:41.2744405Z         }
2026-06-21T22:29:41.2744500Z       }
2026-06-21T22:29:41.2744596Z     },
2026-06-21T22:29:41.2744690Z     {
2026-06-21T22:29:41.2744817Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T22:29:41.2747298Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T22:29:41.2747421Z       "requiredStages": [
2026-06-21T22:29:41.2747551Z         "doc",
2026-06-21T22:29:41.2747646Z         "impl",
2026-06-21T22:29:41.2747751Z         "unit",
2026-06-21T22:29:41.2747847Z         "int"
2026-06-21T22:29:41.2747933Z       ],
2026-06-21T22:29:41.2748037Z       "stages": {
2026-06-21T22:29:41.2748138Z         "doc": {
2026-06-21T22:29:41.2748243Z           "complete": true,
2026-06-21T22:29:41.2748342Z           "evidence": [
2026-06-21T22:29:41.2748443Z             {
2026-06-21T22:29:41.2748561Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2748671Z               "line": 333
2026-06-21T22:29:41.2748768Z             }
2026-06-21T22:29:41.2748896Z           ]
2026-06-21T22:29:41.2749073Z         },
2026-06-21T22:29:41.2749177Z         "impl": {
2026-06-21T22:29:41.2749286Z           "complete": true,
2026-06-21T22:29:41.2749392Z           "evidence": [
2026-06-21T22:29:41.2749487Z             {
2026-06-21T22:29:41.2749635Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2749834Z               "line": 494
2026-06-21T22:29:41.2749939Z             },
2026-06-21T22:29:41.2750039Z             {
2026-06-21T22:29:41.2750182Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2750281Z               "line": 499
2026-06-21T22:29:41.2750383Z             },
2026-06-21T22:29:41.2750487Z             {
2026-06-21T22:29:41.2750625Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2750731Z               "line": 874
2026-06-21T22:29:41.2750830Z             },
2026-06-21T22:29:41.2750935Z             {
2026-06-21T22:29:41.2751069Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2751269Z               "line": 915
2026-06-21T22:29:41.2751374Z             },
2026-06-21T22:29:41.2751469Z             {
2026-06-21T22:29:41.2751613Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2751718Z               "line": 926
2026-06-21T22:29:41.2751817Z             },
2026-06-21T22:29:41.2751923Z             {
2026-06-21T22:29:41.2752060Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.2752164Z               "line": 358
2026-06-21T22:29:41.2752259Z             }
2026-06-21T22:29:41.2752359Z           ]
2026-06-21T22:29:41.2752463Z         },
2026-06-21T22:29:41.2752562Z         "int": {
2026-06-21T22:29:41.2752664Z           "complete": true,
2026-06-21T22:29:41.2752773Z           "evidence": [
2026-06-21T22:29:41.2752873Z             {
2026-06-21T22:29:41.2753026Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T22:29:41.2753134Z               "line": 30
2026-06-21T22:29:41.2753241Z             }
2026-06-21T22:29:41.2753340Z           ]
2026-06-21T22:29:41.2753440Z         },
2026-06-21T22:29:41.2753536Z         "unit": {
2026-06-21T22:29:41.2753655Z           "complete": true,
2026-06-21T22:29:41.2753750Z           "evidence": [
2026-06-21T22:29:41.2753855Z             {
2026-06-21T22:29:41.2753993Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2754103Z               "line": 1493
2026-06-21T22:29:41.2754209Z             },
2026-06-21T22:29:41.2754308Z             {
2026-06-21T22:29:41.2754451Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2754552Z               "line": 1518
2026-06-21T22:29:41.2754656Z             },
2026-06-21T22:29:41.2754746Z             {
2026-06-21T22:29:41.2754886Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2754999Z               "line": 1535
2026-06-21T22:29:41.2755098Z             },
2026-06-21T22:29:41.2755198Z             {
2026-06-21T22:29:41.2755348Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2755454Z               "line": 1578
2026-06-21T22:29:41.2755555Z             }
2026-06-21T22:29:41.2755659Z           ]
2026-06-21T22:29:41.2755749Z         }
2026-06-21T22:29:41.2755845Z       }
2026-06-21T22:29:41.2755945Z     },
2026-06-21T22:29:41.2756044Z     {
2026-06-21T22:29:41.2756198Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T22:29:41.2758788Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T22:29:41.2759107Z       "requiredStages": [],
2026-06-21T22:29:41.2759212Z       "stages": {
2026-06-21T22:29:41.2759318Z         "doc": {
2026-06-21T22:29:41.2759441Z           "complete": false,
2026-06-21T22:29:41.2759546Z           "evidence": []
2026-06-21T22:29:41.2759647Z         },
2026-06-21T22:29:41.2759746Z         "impl": {
2026-06-21T22:29:41.2759846Z           "complete": false,
2026-06-21T22:29:41.2759957Z           "evidence": []
2026-06-21T22:29:41.2760052Z         },
2026-06-21T22:29:41.2760147Z         "int": {
2026-06-21T22:29:41.2760263Z           "complete": false,
2026-06-21T22:29:41.2760372Z           "evidence": []
2026-06-21T22:29:41.2760594Z         },
2026-06-21T22:29:41.2760696Z         "unit": {
2026-06-21T22:29:41.2760813Z           "complete": false,
2026-06-21T22:29:41.2760918Z           "evidence": []
2026-06-21T22:29:41.2761014Z         }
2026-06-21T22:29:41.2761113Z       }
2026-06-21T22:29:41.2761210Z     },
2026-06-21T22:29:41.2761300Z     {
2026-06-21T22:29:41.2761447Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T22:29:41.2765150Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T22:29:41.2765326Z       "requiredStages": [
2026-06-21T22:29:41.2765427Z         "impl",
2026-06-21T22:29:41.2765525Z         "unit",
2026-06-21T22:29:41.2765624Z         "int"
2026-06-21T22:29:41.2765716Z       ],
2026-06-21T22:29:41.2765824Z       "stages": {
2026-06-21T22:29:41.2765961Z         "doc": {
2026-06-21T22:29:41.2766071Z           "complete": false,
2026-06-21T22:29:41.2766176Z           "evidence": []
2026-06-21T22:29:41.2766266Z         },
2026-06-21T22:29:41.2766372Z         "impl": {
2026-06-21T22:29:41.2766482Z           "complete": true,
2026-06-21T22:29:41.2766590Z           "evidence": [
2026-06-21T22:29:41.2766715Z             {
2026-06-21T22:29:41.2766857Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2766958Z               "line": 570
2026-06-21T22:29:41.2767059Z             },
2026-06-21T22:29:41.2767158Z             {
2026-06-21T22:29:41.2767297Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2767402Z               "line": 594
2026-06-21T22:29:41.2767506Z             },
2026-06-21T22:29:41.2767602Z             {
2026-06-21T22:29:41.2767745Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2767854Z               "line": 620
2026-06-21T22:29:41.2767956Z             },
2026-06-21T22:29:41.2768060Z             {
2026-06-21T22:29:41.2768201Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2768301Z               "line": 679
2026-06-21T22:29:41.2768400Z             },
2026-06-21T22:29:41.2768499Z             {
2026-06-21T22:29:41.2768638Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.2768866Z               "line": 89
2026-06-21T22:29:41.2769049Z             },
2026-06-21T22:29:41.2769147Z             {
2026-06-21T22:29:41.2769287Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.2769391Z               "line": 134
2026-06-21T22:29:41.2772075Z             }
2026-06-21T22:29:41.2772204Z           ]
2026-06-21T22:29:41.2772308Z         },
2026-06-21T22:29:41.2772414Z         "int": {
2026-06-21T22:29:41.2772528Z           "complete": true,
2026-06-21T22:29:41.2772642Z           "evidence": [
2026-06-21T22:29:41.2772734Z             {
2026-06-21T22:29:41.2772923Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T22:29:41.2773199Z               "line": 20
2026-06-21T22:29:41.2773308Z             }
2026-06-21T22:29:41.2773409Z           ]
2026-06-21T22:29:41.2773507Z         },
2026-06-21T22:29:41.2773607Z         "unit": {
2026-06-21T22:29:41.2773716Z           "complete": true,
2026-06-21T22:29:41.2773832Z           "evidence": [
2026-06-21T22:29:41.2773931Z             {
2026-06-21T22:29:41.2774093Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2774198Z               "line": 1047
2026-06-21T22:29:41.2774297Z             },
2026-06-21T22:29:41.2774399Z             {
2026-06-21T22:29:41.2774531Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.2774642Z               "line": 445
2026-06-21T22:29:41.2774737Z             }
2026-06-21T22:29:41.2774832Z           ]
2026-06-21T22:29:41.2774941Z         }
2026-06-21T22:29:41.2775043Z       }
2026-06-21T22:29:41.2775147Z     },
2026-06-21T22:29:41.2775242Z     {
2026-06-21T22:29:41.2775395Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T22:29:41.2778071Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T22:29:41.2778192Z       "requiredStages": [
2026-06-21T22:29:41.2778291Z         "doc",
2026-06-21T22:29:41.2778405Z         "impl",
2026-06-21T22:29:41.2778501Z         "unit",
2026-06-21T22:29:41.2778601Z         "int"
2026-06-21T22:29:41.2778704Z       ],
2026-06-21T22:29:41.2778809Z       "stages": {
2026-06-21T22:29:41.2778913Z         "doc": {
2026-06-21T22:29:41.2779097Z           "complete": true,
2026-06-21T22:29:41.2779232Z           "evidence": [
2026-06-21T22:29:41.2779336Z             {
2026-06-21T22:29:41.2779475Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2779580Z               "line": 302
2026-06-21T22:29:41.2779684Z             }
2026-06-21T22:29:41.2779780Z           ]
2026-06-21T22:29:41.2779871Z         },
2026-06-21T22:29:41.2779975Z         "impl": {
2026-06-21T22:29:41.2780075Z           "complete": true,
2026-06-21T22:29:41.2780190Z           "evidence": [
2026-06-21T22:29:41.2780290Z             {
2026-06-21T22:29:41.2780434Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.2780543Z               "line": 108
2026-06-21T22:29:41.2780643Z             },
2026-06-21T22:29:41.2780744Z             {
2026-06-21T22:29:41.2780881Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2780990Z               "line": 921
2026-06-21T22:29:41.2781087Z             },
2026-06-21T22:29:41.2781181Z             {
2026-06-21T22:29:41.2781426Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2781529Z               "line": 1121
2026-06-21T22:29:41.2781628Z             },
2026-06-21T22:29:41.2781724Z             {
2026-06-21T22:29:41.2781872Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2781977Z               "line": 23
2026-06-21T22:29:41.2782078Z             },
2026-06-21T22:29:41.2782182Z             {
2026-06-21T22:29:41.2782325Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2782435Z               "line": 113
2026-06-21T22:29:41.2782530Z             },
2026-06-21T22:29:41.2782625Z             {
2026-06-21T22:29:41.2782868Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2782979Z               "line": 158
2026-06-21T22:29:41.2783088Z             },
2026-06-21T22:29:41.2783188Z             {
2026-06-21T22:29:41.2783332Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2783431Z               "line": 218
2026-06-21T22:29:41.2783545Z             },
2026-06-21T22:29:41.2783642Z             {
2026-06-21T22:29:41.2783788Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2783896Z               "line": 261
2026-06-21T22:29:41.2783988Z             },
2026-06-21T22:29:41.2784086Z             {
2026-06-21T22:29:41.2784214Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2784320Z               "line": 275
2026-06-21T22:29:41.2784424Z             },
2026-06-21T22:29:41.2784529Z             {
2026-06-21T22:29:41.2784668Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2784776Z               "line": 320
2026-06-21T22:29:41.2784882Z             },
2026-06-21T22:29:41.2784983Z             {
2026-06-21T22:29:41.2785125Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2785231Z               "line": 347
2026-06-21T22:29:41.2785321Z             },
2026-06-21T22:29:41.2785416Z             {
2026-06-21T22:29:41.2785555Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2785654Z               "line": 359
2026-06-21T22:29:41.2785754Z             },
2026-06-21T22:29:41.2785856Z             {
2026-06-21T22:29:41.2785993Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2786102Z               "line": 373
2026-06-21T22:29:41.2786204Z             },
2026-06-21T22:29:41.2786303Z             {
2026-06-21T22:29:41.2786437Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2786538Z               "line": 400
2026-06-21T22:29:41.2786636Z             },
2026-06-21T22:29:41.2786736Z             {
2026-06-21T22:29:41.2786884Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2786991Z               "line": 643
2026-06-21T22:29:41.2787090Z             },
2026-06-21T22:29:41.2787192Z             {
2026-06-21T22:29:41.2787329Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2787439Z               "line": 989
2026-06-21T22:29:41.2787540Z             },
2026-06-21T22:29:41.2787634Z             {
2026-06-21T22:29:41.2787764Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2787873Z               "line": 317
2026-06-21T22:29:41.2787973Z             },
2026-06-21T22:29:41.2788069Z             {
2026-06-21T22:29:41.2788211Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2788316Z               "line": 1269
2026-06-21T22:29:41.2788417Z             },
2026-06-21T22:29:41.2788517Z             {
2026-06-21T22:29:41.2788655Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2788771Z               "line": 1341
2026-06-21T22:29:41.2788869Z             },
2026-06-21T22:29:41.2789047Z             {
2026-06-21T22:29:41.2789180Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2789288Z               "line": 1353
2026-06-21T22:29:41.2789383Z             },
2026-06-21T22:29:41.2789582Z             {
2026-06-21T22:29:41.2789715Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2789821Z               "line": 2093
2026-06-21T22:29:41.2789925Z             },
2026-06-21T22:29:41.2790025Z             {
2026-06-21T22:29:41.2790159Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2790258Z               "line": 188
2026-06-21T22:29:41.2790360Z             },
2026-06-21T22:29:41.2790464Z             {
2026-06-21T22:29:41.2790601Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2790707Z               "line": 265
2026-06-21T22:29:41.2790812Z             },
2026-06-21T22:29:41.2791009Z             {
2026-06-21T22:29:41.2791150Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2791260Z               "line": 276
2026-06-21T22:29:41.2791366Z             },
2026-06-21T22:29:41.2791465Z             {
2026-06-21T22:29:41.2791599Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2791709Z               "line": 329
2026-06-21T22:29:41.2791803Z             },
2026-06-21T22:29:41.2791905Z             {
2026-06-21T22:29:41.2792038Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2792146Z               "line": 56
2026-06-21T22:29:41.2792255Z             },
2026-06-21T22:29:41.2792352Z             {
2026-06-21T22:29:41.2792484Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2792590Z               "line": 188
2026-06-21T22:29:41.2792694Z             },
2026-06-21T22:29:41.2792794Z             {
2026-06-21T22:29:41.2792938Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T22:29:41.2793043Z               "line": 82
2026-06-21T22:29:41.2793137Z             },
2026-06-21T22:29:41.2793239Z             {
2026-06-21T22:29:41.2793381Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2793476Z               "line": 308
2026-06-21T22:29:41.2793577Z             },
2026-06-21T22:29:41.2793686Z             {
2026-06-21T22:29:41.2793829Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.2793930Z               "line": 424
2026-06-21T22:29:41.2794028Z             },
2026-06-21T22:29:41.2794130Z             {
2026-06-21T22:29:41.2794259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.2794367Z               "line": 2006
2026-06-21T22:29:41.2794466Z             }
2026-06-21T22:29:41.2794562Z           ]
2026-06-21T22:29:41.2794656Z         },
2026-06-21T22:29:41.2794750Z         "int": {
2026-06-21T22:29:41.2794846Z           "complete": true,
2026-06-21T22:29:41.2794952Z           "evidence": [
2026-06-21T22:29:41.2795060Z             {
2026-06-21T22:29:41.2795205Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T22:29:41.2795309Z               "line": 57
2026-06-21T22:29:41.2795404Z             },
2026-06-21T22:29:41.2795505Z             {
2026-06-21T22:29:41.2795633Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T22:29:41.2795747Z               "line": 41
2026-06-21T22:29:41.2795839Z             }
2026-06-21T22:29:41.2795943Z           ]
2026-06-21T22:29:41.2796043Z         },
2026-06-21T22:29:41.2796144Z         "unit": {
2026-06-21T22:29:41.2796258Z           "complete": true,
2026-06-21T22:29:41.2796367Z           "evidence": [
2026-06-21T22:29:41.2796468Z             {
2026-06-21T22:29:41.2796611Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.2796721Z               "line": 532
2026-06-21T22:29:41.2796826Z             },
2026-06-21T22:29:41.2796925Z             {
2026-06-21T22:29:41.2797069Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.2797178Z               "line": 757
2026-06-21T22:29:41.2797282Z             },
2026-06-21T22:29:41.2797382Z             {
2026-06-21T22:29:41.2797528Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2797632Z               "line": 1067
2026-06-21T22:29:41.2797732Z             },
2026-06-21T22:29:41.2797923Z             {
2026-06-21T22:29:41.2798062Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2798172Z               "line": 1101
2026-06-21T22:29:41.2798276Z             },
2026-06-21T22:29:41.2798377Z             {
2026-06-21T22:29:41.2798519Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2798629Z               "line": 1143
2026-06-21T22:29:41.2798730Z             },
2026-06-21T22:29:41.2798829Z             {
2026-06-21T22:29:41.2799031Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2799138Z               "line": 1215
2026-06-21T22:29:41.2799336Z             },
2026-06-21T22:29:41.2799448Z             {
2026-06-21T22:29:41.2799588Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2799693Z               "line": 1228
2026-06-21T22:29:41.2799792Z             },
2026-06-21T22:29:41.2799895Z             {
2026-06-21T22:29:41.2800029Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2800137Z               "line": 1251
2026-06-21T22:29:41.2800227Z             },
2026-06-21T22:29:41.2800328Z             {
2026-06-21T22:29:41.2800470Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2800575Z               "line": 1277
2026-06-21T22:29:41.2800676Z             },
2026-06-21T22:29:41.2800780Z             {
2026-06-21T22:29:41.2800920Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2801019Z               "line": 1291
2026-06-21T22:29:41.2801119Z             },
2026-06-21T22:29:41.2801220Z             {
2026-06-21T22:29:41.2801362Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2801472Z               "line": 1315
2026-06-21T22:29:41.2801578Z             },
2026-06-21T22:29:41.2801672Z             {
2026-06-21T22:29:41.2801815Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2801926Z               "line": 1447
2026-06-21T22:29:41.2802030Z             },
2026-06-21T22:29:41.2802116Z             {
2026-06-21T22:29:41.2802259Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2802359Z               "line": 1623
2026-06-21T22:29:41.2802455Z             },
2026-06-21T22:29:41.2802556Z             {
2026-06-21T22:29:41.2802687Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2802787Z               "line": 1678
2026-06-21T22:29:41.2802888Z             },
2026-06-21T22:29:41.2802997Z             {
2026-06-21T22:29:41.2803140Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2803236Z               "line": 1724
2026-06-21T22:29:41.2803340Z             },
2026-06-21T22:29:41.2803436Z             {
2026-06-21T22:29:41.2803574Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2803679Z               "line": 1769
2026-06-21T22:29:41.2803779Z             },
2026-06-21T22:29:41.2803879Z             {
2026-06-21T22:29:41.2804022Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2804114Z               "line": 1813
2026-06-21T22:29:41.2804213Z             },
2026-06-21T22:29:41.2804313Z             {
2026-06-21T22:29:41.2804448Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2804542Z               "line": 1855
2026-06-21T22:29:41.2804642Z             },
2026-06-21T22:29:41.2804738Z             {
2026-06-21T22:29:41.2804870Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2804975Z               "line": 2447
2026-06-21T22:29:41.2805075Z             },
2026-06-21T22:29:41.2805179Z             {
2026-06-21T22:29:41.2805320Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2805425Z               "line": 217
2026-06-21T22:29:41.2805517Z             },
2026-06-21T22:29:41.2805620Z             {
2026-06-21T22:29:41.2805760Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2805973Z               "line": 233
2026-06-21T22:29:41.2806075Z             },
2026-06-21T22:29:41.2806170Z             {
2026-06-21T22:29:41.2806317Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2806427Z               "line": 254
2026-06-21T22:29:41.2806527Z             },
2026-06-21T22:29:41.2806622Z             {
2026-06-21T22:29:41.2806765Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2806870Z               "line": 265
2026-06-21T22:29:41.2806956Z             },
2026-06-21T22:29:41.2807057Z             {
2026-06-21T22:29:41.2807194Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2807395Z               "line": 278
2026-06-21T22:29:41.2807495Z             },
2026-06-21T22:29:41.2807601Z             {
2026-06-21T22:29:41.2807743Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2807847Z               "line": 289
2026-06-21T22:29:41.2807952Z             },
2026-06-21T22:29:41.2808055Z             {
2026-06-21T22:29:41.2808187Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2808292Z               "line": 301
2026-06-21T22:29:41.2808394Z             },
2026-06-21T22:29:41.2808492Z             {
2026-06-21T22:29:41.2808622Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2808723Z               "line": 312
2026-06-21T22:29:41.2808821Z             },
2026-06-21T22:29:41.2808923Z             {
2026-06-21T22:29:41.2809160Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2809252Z               "line": 323
2026-06-21T22:29:41.2809351Z             },
2026-06-21T22:29:41.2809465Z             {
2026-06-21T22:29:41.2809609Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2809713Z               "line": 332
2026-06-21T22:29:41.2809809Z             },
2026-06-21T22:29:41.2809910Z             {
2026-06-21T22:29:41.2810037Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2810143Z               "line": 342
2026-06-21T22:29:41.2810239Z             },
2026-06-21T22:29:41.2810332Z             {
2026-06-21T22:29:41.2810470Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T22:29:41.2810575Z               "line": 358
2026-06-21T22:29:41.2810678Z             },
2026-06-21T22:29:41.2810777Z             {
2026-06-21T22:29:41.2810917Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2811021Z               "line": 758
2026-06-21T22:29:41.2811121Z             },
2026-06-21T22:29:41.2811222Z             {
2026-06-21T22:29:41.2811364Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2811480Z               "line": 794
2026-06-21T22:29:41.2811575Z             },
2026-06-21T22:29:41.2811669Z             {
2026-06-21T22:29:41.2811809Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.2811908Z               "line": 966
2026-06-21T22:29:41.2812013Z             },
2026-06-21T22:29:41.2812129Z             {
2026-06-21T22:29:41.2812271Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T22:29:41.2812370Z               "line": 145
2026-06-21T22:29:41.2812472Z             },
2026-06-21T22:29:41.2812570Z             {
2026-06-21T22:29:41.2812710Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T22:29:41.2812810Z               "line": 224
2026-06-21T22:29:41.2812919Z             },
2026-06-21T22:29:41.2813010Z             {
2026-06-21T22:29:41.2813148Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T22:29:41.2813257Z               "line": 293
2026-06-21T22:29:41.2813357Z             },
2026-06-21T22:29:41.2813462Z             {
2026-06-21T22:29:41.2813595Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T22:29:41.2813700Z               "line": 17
2026-06-21T22:29:41.2813805Z             },
2026-06-21T22:29:41.2813905Z             {
2026-06-21T22:29:41.2814045Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T22:29:41.2814253Z               "line": 104
2026-06-21T22:29:41.2814354Z             }
2026-06-21T22:29:41.2814449Z           ]
2026-06-21T22:29:41.2814544Z         }
2026-06-21T22:29:41.2814644Z       }
2026-06-21T22:29:41.2814740Z     },
2026-06-21T22:29:41.2814840Z     {
2026-06-21T22:29:41.2814984Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T22:29:41.2818007Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T22:29:41.2818261Z       "requiredStages": [
2026-06-21T22:29:41.2818368Z         "doc",
2026-06-21T22:29:41.2818468Z         "impl",
2026-06-21T22:29:41.2818573Z         "unit",
2026-06-21T22:29:41.2818672Z         "int"
2026-06-21T22:29:41.2818800Z       ],
2026-06-21T22:29:41.2818906Z       "stages": {
2026-06-21T22:29:41.2819062Z         "doc": {
2026-06-21T22:29:41.2819173Z           "complete": true,
2026-06-21T22:29:41.2819273Z           "evidence": [
2026-06-21T22:29:41.2819376Z             {
2026-06-21T22:29:41.2819511Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2819626Z               "line": 388
2026-06-21T22:29:41.2819720Z             }
2026-06-21T22:29:41.2819816Z           ]
2026-06-21T22:29:41.2819915Z         },
2026-06-21T22:29:41.2820011Z         "impl": {
2026-06-21T22:29:41.2820122Z           "complete": true,
2026-06-21T22:29:41.2820230Z           "evidence": [
2026-06-21T22:29:41.2820330Z             {
2026-06-21T22:29:41.2820465Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2820573Z               "line": 823
2026-06-21T22:29:41.2820679Z             },
2026-06-21T22:29:41.2820775Z             {
2026-06-21T22:29:41.2820921Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2821020Z               "line": 846
2026-06-21T22:29:41.2821126Z             }
2026-06-21T22:29:41.2821219Z           ]
2026-06-21T22:29:41.2821319Z         },
2026-06-21T22:29:41.2821429Z         "int": {
2026-06-21T22:29:41.2821534Z           "complete": true,
2026-06-21T22:29:41.2821643Z           "evidence": [
2026-06-21T22:29:41.2821749Z             {
2026-06-21T22:29:41.2821900Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.2822011Z               "line": 228
2026-06-21T22:29:41.2822102Z             },
2026-06-21T22:29:41.2822206Z             {
2026-06-21T22:29:41.2822345Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T22:29:41.2822454Z               "line": 468
2026-06-21T22:29:41.2822553Z             }
2026-06-21T22:29:41.2822655Z           ]
2026-06-21T22:29:41.2822745Z         },
2026-06-21T22:29:41.2822845Z         "unit": {
2026-06-21T22:29:41.2822965Z           "complete": true,
2026-06-21T22:29:41.2823065Z           "evidence": [
2026-06-21T22:29:41.2823160Z             {
2026-06-21T22:29:41.2823299Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.2823399Z               "line": 1583
2026-06-21T22:29:41.2823498Z             }
2026-06-21T22:29:41.2823605Z           ]
2026-06-21T22:29:41.2823709Z         }
2026-06-21T22:29:41.2823902Z       }
2026-06-21T22:29:41.2824003Z     },
2026-06-21T22:29:41.2824103Z     {
2026-06-21T22:29:41.2824246Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T22:29:41.2827857Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T22:29:41.2828106Z       "requiredStages": [
2026-06-21T22:29:41.2828210Z         "doc",
2026-06-21T22:29:41.2828324Z         "impl",
2026-06-21T22:29:41.2828426Z         "unit"
2026-06-21T22:29:41.2828534Z       ],
2026-06-21T22:29:41.2828658Z       "stages": {
2026-06-21T22:29:41.2828760Z         "doc": {
2026-06-21T22:29:41.2828868Z           "complete": true,
2026-06-21T22:29:41.2829067Z           "evidence": [
2026-06-21T22:29:41.2829166Z             {
2026-06-21T22:29:41.2829293Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2829427Z               "line": 395
2026-06-21T22:29:41.2829528Z             }
2026-06-21T22:29:41.2829627Z           ]
2026-06-21T22:29:41.2829728Z         },
2026-06-21T22:29:41.2829828Z         "impl": {
2026-06-21T22:29:41.2829941Z           "complete": true,
2026-06-21T22:29:41.2830038Z           "evidence": [
2026-06-21T22:29:41.2830147Z             {
2026-06-21T22:29:41.2830285Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2830396Z               "line": 75
2026-06-21T22:29:41.2830505Z             }
2026-06-21T22:29:41.2830605Z           ]
2026-06-21T22:29:41.2830711Z         },
2026-06-21T22:29:41.2830809Z         "int": {
2026-06-21T22:29:41.2830939Z           "complete": false,
2026-06-21T22:29:41.2831054Z           "evidence": []
2026-06-21T22:29:41.2831157Z         },
2026-06-21T22:29:41.2831254Z         "unit": {
2026-06-21T22:29:41.2831364Z           "complete": true,
2026-06-21T22:29:41.2831472Z           "evidence": [
2026-06-21T22:29:41.2831571Z             {
2026-06-21T22:29:41.2831714Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.2831822Z               "line": 632
2026-06-21T22:29:41.2831922Z             }
2026-06-21T22:29:41.2832028Z           ]
2026-06-21T22:29:41.2832113Z         }
2026-06-21T22:29:41.2832217Z       }
2026-06-21T22:29:41.2832314Z     },
2026-06-21T22:29:41.2832419Z     {
2026-06-21T22:29:41.2832551Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T22:29:41.2832757Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T22:29:41.2832871Z       "requiredStages": [
2026-06-21T22:29:41.2832972Z         "impl",
2026-06-21T22:29:41.2833067Z         "unit"
2026-06-21T22:29:41.2833167Z       ],
2026-06-21T22:29:41.2833273Z       "stages": {
2026-06-21T22:29:41.2833377Z         "doc": {
2026-06-21T22:29:41.2833491Z           "complete": false,
2026-06-21T22:29:41.2833602Z           "evidence": []
2026-06-21T22:29:41.2833705Z         },
2026-06-21T22:29:41.2833811Z         "impl": {
2026-06-21T22:29:41.2834024Z           "complete": true,
2026-06-21T22:29:41.2834135Z           "evidence": [
2026-06-21T22:29:41.2834222Z             {
2026-06-21T22:29:41.2834372Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2834477Z               "line": 172
2026-06-21T22:29:41.2834578Z             },
2026-06-21T22:29:41.2834677Z             {
2026-06-21T22:29:41.2834811Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2834916Z               "line": 18
2026-06-21T22:29:41.2835020Z             },
2026-06-21T22:29:41.2835126Z             {
2026-06-21T22:29:41.2835259Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2835460Z               "line": 100
2026-06-21T22:29:41.2835550Z             }
2026-06-21T22:29:41.2835654Z           ]
2026-06-21T22:29:41.2835755Z         },
2026-06-21T22:29:41.2835856Z         "int": {
2026-06-21T22:29:41.2835979Z           "complete": false,
2026-06-21T22:29:41.2836099Z           "evidence": []
2026-06-21T22:29:41.2836203Z         },
2026-06-21T22:29:41.2836312Z         "unit": {
2026-06-21T22:29:41.2836423Z           "complete": true,
2026-06-21T22:29:41.2836532Z           "evidence": [
2026-06-21T22:29:41.2836632Z             {
2026-06-21T22:29:41.2836779Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.2836891Z               "line": 857
2026-06-21T22:29:41.2836991Z             },
2026-06-21T22:29:41.2837097Z             {
2026-06-21T22:29:41.2837230Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2837339Z               "line": 161
2026-06-21T22:29:41.2837435Z             },
2026-06-21T22:29:41.2837544Z             {
2026-06-21T22:29:41.2837688Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.2837797Z               "line": 233
2026-06-21T22:29:41.2837902Z             }
2026-06-21T22:29:41.2837998Z           ]
2026-06-21T22:29:41.2838102Z         }
2026-06-21T22:29:41.2838197Z       }
2026-06-21T22:29:41.2838302Z     },
2026-06-21T22:29:41.2838413Z     {
2026-06-21T22:29:41.2838550Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T22:29:41.2839103Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T22:29:41.2839218Z       "requiredStages": [
2026-06-21T22:29:41.2839325Z         "impl",
2026-06-21T22:29:41.2839428Z         "unit"
2026-06-21T22:29:41.2839527Z       ],
2026-06-21T22:29:41.2839622Z       "stages": {
2026-06-21T22:29:41.2839726Z         "doc": {
2026-06-21T22:29:41.2839830Z           "complete": true,
2026-06-21T22:29:41.2839935Z           "evidence": [
2026-06-21T22:29:41.2840041Z             {
2026-06-21T22:29:41.2840173Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2840284Z               "line": 220
2026-06-21T22:29:41.2840388Z             }
2026-06-21T22:29:41.2840483Z           ]
2026-06-21T22:29:41.2840584Z         },
2026-06-21T22:29:41.2840689Z         "impl": {
2026-06-21T22:29:41.2840807Z           "complete": true,
2026-06-21T22:29:41.2840908Z           "evidence": [
2026-06-21T22:29:41.2841012Z             {
2026-06-21T22:29:41.2841160Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.2841266Z               "line": 316
2026-06-21T22:29:41.2841374Z             },
2026-06-21T22:29:41.2841475Z             {
2026-06-21T22:29:41.2841619Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.2841722Z               "line": 356
2026-06-21T22:29:41.2841819Z             },
2026-06-21T22:29:41.2841924Z             {
2026-06-21T22:29:41.2842065Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.2842170Z               "line": 578
2026-06-21T22:29:41.2842265Z             },
2026-06-21T22:29:41.2842368Z             {
2026-06-21T22:29:41.2842497Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.2842602Z               "line": 77
2026-06-21T22:29:41.2842826Z             }
2026-06-21T22:29:41.2842921Z           ]
2026-06-21T22:29:41.2843026Z         },
2026-06-21T22:29:41.2843126Z         "int": {
2026-06-21T22:29:41.2843241Z           "complete": false,
2026-06-21T22:29:41.2843359Z           "evidence": []
2026-06-21T22:29:41.2843441Z         },
2026-06-21T22:29:41.2843546Z         "unit": {
2026-06-21T22:29:41.2843656Z           "complete": true,
2026-06-21T22:29:41.2843765Z           "evidence": [
2026-06-21T22:29:41.2843866Z             {
2026-06-21T22:29:41.2844008Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.2844114Z               "line": 747
2026-06-21T22:29:41.2844204Z             },
2026-06-21T22:29:41.2844410Z             {
2026-06-21T22:29:41.2844542Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.2844642Z               "line": 785
2026-06-21T22:29:41.2844744Z             },
2026-06-21T22:29:41.2844853Z             {
2026-06-21T22:29:41.2844989Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.2845104Z               "line": 166
2026-06-21T22:29:41.2845214Z             }
2026-06-21T22:29:41.2845313Z           ]
2026-06-21T22:29:41.2845409Z         }
2026-06-21T22:29:41.2845505Z       }
2026-06-21T22:29:41.2845604Z     },
2026-06-21T22:29:41.2845701Z     {
2026-06-21T22:29:41.2845844Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T22:29:41.2846435Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T22:29:41.2846548Z       "requiredStages": [
2026-06-21T22:29:41.2846650Z         "impl",
2026-06-21T22:29:41.2846750Z         "unit"
2026-06-21T22:29:41.2846834Z       ],
2026-06-21T22:29:41.2846940Z       "stages": {
2026-06-21T22:29:41.2847041Z         "doc": {
2026-06-21T22:29:41.2847158Z           "complete": false,
2026-06-21T22:29:41.2847267Z           "evidence": []
2026-06-21T22:29:41.2847368Z         },
2026-06-21T22:29:41.2847470Z         "impl": {
2026-06-21T22:29:41.2847574Z           "complete": true,
2026-06-21T22:29:41.2847681Z           "evidence": [
2026-06-21T22:29:41.2847780Z             {
2026-06-21T22:29:41.2847923Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T22:29:41.2848029Z               "line": 22
2026-06-21T22:29:41.2848133Z             },
2026-06-21T22:29:41.2848228Z             {
2026-06-21T22:29:41.2848353Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.2848457Z               "line": 487
2026-06-21T22:29:41.2848553Z             },
2026-06-21T22:29:41.2848653Z             {
2026-06-21T22:29:41.2848795Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T22:29:41.2848901Z               "line": 17
2026-06-21T22:29:41.2849091Z             },
2026-06-21T22:29:41.2849187Z             {
2026-06-21T22:29:41.2849334Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T22:29:41.2849459Z               "line": 147
2026-06-21T22:29:41.2849550Z             },
2026-06-21T22:29:41.2849649Z             {
2026-06-21T22:29:41.2849797Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2849894Z               "line": 226
2026-06-21T22:29:41.2849988Z             },
2026-06-21T22:29:41.2850082Z             {
2026-06-21T22:29:41.2850230Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2850333Z               "line": 251
2026-06-21T22:29:41.2850432Z             },
2026-06-21T22:29:41.2850533Z             {
2026-06-21T22:29:41.2850681Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2850790Z               "line": 277
2026-06-21T22:29:41.2850896Z             },
2026-06-21T22:29:41.2850995Z             {
2026-06-21T22:29:41.2851139Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.2851244Z               "line": 124
2026-06-21T22:29:41.2851343Z             },
2026-06-21T22:29:41.2851568Z             {
2026-06-21T22:29:41.2851701Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.2851812Z               "line": 224
2026-06-21T22:29:41.2851911Z             }
2026-06-21T22:29:41.2852016Z           ]
2026-06-21T22:29:41.2852117Z         },
2026-06-21T22:29:41.2852221Z         "int": {
2026-06-21T22:29:41.2852336Z           "complete": false,
2026-06-21T22:29:41.2852432Z           "evidence": []
2026-06-21T22:29:41.2852531Z         },
2026-06-21T22:29:41.2852634Z         "unit": {
2026-06-21T22:29:41.2852730Z           "complete": true,
2026-06-21T22:29:41.2852839Z           "evidence": [
2026-06-21T22:29:41.2853042Z             {
2026-06-21T22:29:41.2853191Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T22:29:41.2853285Z               "line": 63
2026-06-21T22:29:41.2853391Z             },
2026-06-21T22:29:41.2853491Z             {
2026-06-21T22:29:41.2853623Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T22:29:41.2853739Z               "line": 73
2026-06-21T22:29:41.2853849Z             },
2026-06-21T22:29:41.2853952Z             {
2026-06-21T22:29:41.2854097Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T22:29:41.2854197Z               "line": 85
2026-06-21T22:29:41.2854297Z             },
2026-06-21T22:29:41.2854398Z             {
2026-06-21T22:29:41.2854535Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.2854650Z               "line": 346
2026-06-21T22:29:41.2854759Z             },
2026-06-21T22:29:41.2854855Z             {
2026-06-21T22:29:41.2854999Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T22:29:41.2855098Z               "line": 281
2026-06-21T22:29:41.2855207Z             },
2026-06-21T22:29:41.2855304Z             {
2026-06-21T22:29:41.2855436Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T22:29:41.2855549Z               "line": 322
2026-06-21T22:29:41.2855640Z             },
2026-06-21T22:29:41.2855751Z             {
2026-06-21T22:29:41.2855873Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T22:29:41.2858431Z               "line": 360
2026-06-21T22:29:41.2858546Z             },
2026-06-21T22:29:41.2858660Z             {
2026-06-21T22:29:41.2858822Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.2858927Z               "line": 688
2026-06-21T22:29:41.2859123Z             },
2026-06-21T22:29:41.2859223Z             {
2026-06-21T22:29:41.2859370Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.2859481Z               "line": 397
2026-06-21T22:29:41.2859580Z             },
2026-06-21T22:29:41.2859694Z             {
2026-06-21T22:29:41.2859839Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.2859942Z               "line": 440
2026-06-21T22:29:41.2860038Z             }
2026-06-21T22:29:41.2860140Z           ]
2026-06-21T22:29:41.2860237Z         }
2026-06-21T22:29:41.2860324Z       }
2026-06-21T22:29:41.2860430Z     },
2026-06-21T22:29:41.2860515Z     {
2026-06-21T22:29:41.2860643Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T22:29:41.2860874Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T22:29:41.2860988Z       "requiredStages": [
2026-06-21T22:29:41.2861089Z         "impl",
2026-06-21T22:29:41.2861175Z         "unit"
2026-06-21T22:29:41.2861264Z       ],
2026-06-21T22:29:41.2861360Z       "stages": {
2026-06-21T22:29:41.2861461Z         "doc": {
2026-06-21T22:29:41.2861574Z           "complete": false,
2026-06-21T22:29:41.2861685Z           "evidence": []
2026-06-21T22:29:41.2861785Z         },
2026-06-21T22:29:41.2861889Z         "impl": {
2026-06-21T22:29:41.2861999Z           "complete": true,
2026-06-21T22:29:41.2862100Z           "evidence": [
2026-06-21T22:29:41.2862209Z             {
2026-06-21T22:29:41.2862348Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T22:29:41.2862461Z               "line": 169
2026-06-21T22:29:41.2862692Z             }
2026-06-21T22:29:41.2862790Z           ]
2026-06-21T22:29:41.2862891Z         },
2026-06-21T22:29:41.2862992Z         "int": {
2026-06-21T22:29:41.2863110Z           "complete": true,
2026-06-21T22:29:41.2863214Z           "evidence": [
2026-06-21T22:29:41.2863314Z             {
2026-06-21T22:29:41.2863455Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T22:29:41.2863564Z               "line": 44
2026-06-21T22:29:41.2863670Z             },
2026-06-21T22:29:41.2863765Z             {
2026-06-21T22:29:41.2863903Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T22:29:41.2864004Z               "line": 66
2026-06-21T22:29:41.2864198Z             }
2026-06-21T22:29:41.2864304Z           ]
2026-06-21T22:29:41.2864404Z         },
2026-06-21T22:29:41.2864503Z         "unit": {
2026-06-21T22:29:41.2864614Z           "complete": true,
2026-06-21T22:29:41.2864723Z           "evidence": [
2026-06-21T22:29:41.2864823Z             {
2026-06-21T22:29:41.2864972Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T22:29:41.2865071Z               "line": 186
2026-06-21T22:29:41.2865176Z             },
2026-06-21T22:29:41.2865268Z             {
2026-06-21T22:29:41.2865395Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T22:29:41.2865511Z               "line": 238
2026-06-21T22:29:41.2865606Z             },
2026-06-21T22:29:41.2865700Z             {
2026-06-21T22:29:41.2865830Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T22:29:41.2865940Z               "line": 266
2026-06-21T22:29:41.2866043Z             }
2026-06-21T22:29:41.2866143Z           ]
2026-06-21T22:29:41.2866244Z         }
2026-06-21T22:29:41.2866344Z       }
2026-06-21T22:29:41.2866438Z     },
2026-06-21T22:29:41.2866534Z     {
2026-06-21T22:29:41.2866673Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T22:29:41.2871029Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T22:29:41.2871231Z       "requiredStages": [],
2026-06-21T22:29:41.2871336Z       "stages": {
2026-06-21T22:29:41.2871435Z         "doc": {
2026-06-21T22:29:41.2871553Z           "complete": false,
2026-06-21T22:29:41.2871658Z           "evidence": []
2026-06-21T22:29:41.2871750Z         },
2026-06-21T22:29:41.2871853Z         "impl": {
2026-06-21T22:29:41.2871997Z           "complete": false,
2026-06-21T22:29:41.2872106Z           "evidence": []
2026-06-21T22:29:41.2872197Z         },
2026-06-21T22:29:41.2872303Z         "int": {
2026-06-21T22:29:41.2872403Z           "complete": false,
2026-06-21T22:29:41.2872506Z           "evidence": []
2026-06-21T22:29:41.2872608Z         },
2026-06-21T22:29:41.2872821Z         "unit": {
2026-06-21T22:29:41.2872947Z           "complete": false,
2026-06-21T22:29:41.2873055Z           "evidence": []
2026-06-21T22:29:41.2873151Z         }
2026-06-21T22:29:41.2873247Z       }
2026-06-21T22:29:41.2873336Z     },
2026-06-21T22:29:41.2873441Z     {
2026-06-21T22:29:41.2873591Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T22:29:41.2887383Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T22:29:41.2888140Z       "requiredStages": [
2026-06-21T22:29:41.2888246Z         "doc",
2026-06-21T22:29:41.2888346Z         "impl",
2026-06-21T22:29:41.2888441Z         "unit",
2026-06-21T22:29:41.2888536Z         "int"
2026-06-21T22:29:41.2888642Z       ],
2026-06-21T22:29:41.2888746Z       "stages": {
2026-06-21T22:29:41.2888841Z         "doc": {
2026-06-21T22:29:41.2889042Z           "complete": true,
2026-06-21T22:29:41.2889142Z           "evidence": [
2026-06-21T22:29:41.2889239Z             {
2026-06-21T22:29:41.2889371Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2889517Z               "line": 468
2026-06-21T22:29:41.2889622Z             }
2026-06-21T22:29:41.2889730Z           ]
2026-06-21T22:29:41.2889834Z         },
2026-06-21T22:29:41.2889936Z         "impl": {
2026-06-21T22:29:41.2890045Z           "complete": true,
2026-06-21T22:29:41.2890178Z           "evidence": [
2026-06-21T22:29:41.2890279Z             {
2026-06-21T22:29:41.2890411Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2890527Z               "line": 348
2026-06-21T22:29:41.2890622Z             },
2026-06-21T22:29:41.2890721Z             {
2026-06-21T22:29:41.2890856Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.2890955Z               "line": 1266
2026-06-21T22:29:41.2891055Z             },
2026-06-21T22:29:41.2891157Z             {
2026-06-21T22:29:41.2891299Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2891403Z               "line": 836
2026-06-21T22:29:41.2891500Z             }
2026-06-21T22:29:41.2891604Z           ]
2026-06-21T22:29:41.2891699Z         },
2026-06-21T22:29:41.2891801Z         "int": {
2026-06-21T22:29:41.2891904Z           "complete": true,
2026-06-21T22:29:41.2892018Z           "evidence": [
2026-06-21T22:29:41.2892120Z             {
2026-06-21T22:29:41.2892262Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.2892380Z               "line": 1163
2026-06-21T22:29:41.2892480Z             },
2026-06-21T22:29:41.2892583Z             {
2026-06-21T22:29:41.2892716Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.2892836Z               "line": 1264
2026-06-21T22:29:41.2892945Z             },
2026-06-21T22:29:41.2893040Z             {
2026-06-21T22:29:41.2893184Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.2893288Z               "line": 1169
2026-06-21T22:29:41.2893394Z             }
2026-06-21T22:29:41.2893489Z           ]
2026-06-21T22:29:41.2893602Z         },
2026-06-21T22:29:41.2893704Z         "unit": {
2026-06-21T22:29:41.2893809Z           "complete": true,
2026-06-21T22:29:41.2893917Z           "evidence": [
2026-06-21T22:29:41.2894014Z             {
2026-06-21T22:29:41.2894151Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2894251Z               "line": 3091
2026-06-21T22:29:41.2894462Z             }
2026-06-21T22:29:41.2894571Z           ]
2026-06-21T22:29:41.2894663Z         }
2026-06-21T22:29:41.2894758Z       }
2026-06-21T22:29:41.2894847Z     },
2026-06-21T22:29:41.2894946Z     {
2026-06-21T22:29:41.2895085Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T22:29:41.2895559Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T22:29:41.2895670Z       "requiredStages": [
2026-06-21T22:29:41.2895770Z         "impl",
2026-06-21T22:29:41.2895864Z         "unit",
2026-06-21T22:29:41.2896065Z         "int"
2026-06-21T22:29:41.2896174Z       ],
2026-06-21T22:29:41.2896276Z       "stages": {
2026-06-21T22:29:41.2896379Z         "doc": {
2026-06-21T22:29:41.2896494Z           "complete": false,
2026-06-21T22:29:41.2896595Z           "evidence": []
2026-06-21T22:29:41.2896704Z         },
2026-06-21T22:29:41.2896799Z         "impl": {
2026-06-21T22:29:41.2896910Z           "complete": true,
2026-06-21T22:29:41.2897018Z           "evidence": [
2026-06-21T22:29:41.2897118Z             {
2026-06-21T22:29:41.2897273Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2897376Z               "line": 178
2026-06-21T22:29:41.2897472Z             },
2026-06-21T22:29:41.2897559Z             {
2026-06-21T22:29:41.2897709Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2897818Z               "line": 226
2026-06-21T22:29:41.2897919Z             },
2026-06-21T22:29:41.2898010Z             {
2026-06-21T22:29:41.2898138Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.2898263Z               "line": 79
2026-06-21T22:29:41.2898362Z             },
2026-06-21T22:29:41.2898462Z             {
2026-06-21T22:29:41.2898596Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.2898700Z               "line": 52
2026-06-21T22:29:41.2898797Z             },
2026-06-21T22:29:41.2898901Z             {
2026-06-21T22:29:41.2899111Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.2899211Z               "line": 263
2026-06-21T22:29:41.2899311Z             },
2026-06-21T22:29:41.2899416Z             {
2026-06-21T22:29:41.2899550Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2899654Z               "line": 27
2026-06-21T22:29:41.2899740Z             },
2026-06-21T22:29:41.2899846Z             {
2026-06-21T22:29:41.2899969Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2900078Z               "line": 79
2026-06-21T22:29:41.2900182Z             },
2026-06-21T22:29:41.2900290Z             {
2026-06-21T22:29:41.2900428Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2900534Z               "line": 102
2026-06-21T22:29:41.2900638Z             },
2026-06-21T22:29:41.2900733Z             {
2026-06-21T22:29:41.2900867Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.2900981Z               "line": 116
2026-06-21T22:29:41.2901083Z             }
2026-06-21T22:29:41.2901187Z           ]
2026-06-21T22:29:41.2901287Z         },
2026-06-21T22:29:41.2901393Z         "int": {
2026-06-21T22:29:41.2901497Z           "complete": true,
2026-06-21T22:29:41.2901601Z           "evidence": [
2026-06-21T22:29:41.2901707Z             {
2026-06-21T22:29:41.2901859Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T22:29:41.2901963Z               "line": 43
2026-06-21T22:29:41.2902055Z             }
2026-06-21T22:29:41.2902159Z           ]
2026-06-21T22:29:41.2902259Z         },
2026-06-21T22:29:41.2902366Z         "unit": {
2026-06-21T22:29:41.2902483Z           "complete": true,
2026-06-21T22:29:41.2902583Z           "evidence": [
2026-06-21T22:29:41.2902695Z             {
2026-06-21T22:29:41.2902845Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.2902949Z               "line": 678
2026-06-21T22:29:41.2903153Z             },
2026-06-21T22:29:41.2903257Z             {
2026-06-21T22:29:41.2903396Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.2903496Z               "line": 495
2026-06-21T22:29:41.2903591Z             },
2026-06-21T22:29:41.2903692Z             {
2026-06-21T22:29:41.2903839Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2903945Z               "line": 124
2026-06-21T22:29:41.2904040Z             },
2026-06-21T22:29:41.2904139Z             {
2026-06-21T22:29:41.2904274Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2904383Z               "line": 143
2026-06-21T22:29:41.2904584Z             },
2026-06-21T22:29:41.2904688Z             {
2026-06-21T22:29:41.2904836Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2904932Z               "line": 160
2026-06-21T22:29:41.2905036Z             },
2026-06-21T22:29:41.2905131Z             {
2026-06-21T22:29:41.2905276Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2905388Z               "line": 187
2026-06-21T22:29:41.2905488Z             },
2026-06-21T22:29:41.2905593Z             {
2026-06-21T22:29:41.2905719Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T22:29:41.2905828Z               "line": 206
2026-06-21T22:29:41.2905930Z             },
2026-06-21T22:29:41.2906034Z             {
2026-06-21T22:29:41.2906167Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.2906268Z               "line": 229
2026-06-21T22:29:41.2906372Z             }
2026-06-21T22:29:41.2906472Z           ]
2026-06-21T22:29:41.2906578Z         }
2026-06-21T22:29:41.2906678Z       }
2026-06-21T22:29:41.2906778Z     },
2026-06-21T22:29:41.2906879Z     {
2026-06-21T22:29:41.2907025Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T22:29:41.2907712Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T22:29:41.2907823Z       "requiredStages": [
2026-06-21T22:29:41.2907931Z         "impl",
2026-06-21T22:29:41.2908017Z         "unit"
2026-06-21T22:29:41.2908119Z       ],
2026-06-21T22:29:41.2908227Z       "stages": {
2026-06-21T22:29:41.2908331Z         "doc": {
2026-06-21T22:29:41.2908446Z           "complete": false,
2026-06-21T22:29:41.2908556Z           "evidence": []
2026-06-21T22:29:41.2908650Z         },
2026-06-21T22:29:41.2908756Z         "impl": {
2026-06-21T22:29:41.2908876Z           "complete": true,
2026-06-21T22:29:41.2909066Z           "evidence": [
2026-06-21T22:29:41.2909161Z             {
2026-06-21T22:29:41.2909308Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2909415Z               "line": 1300
2026-06-21T22:29:41.2909518Z             },
2026-06-21T22:29:41.2909618Z             {
2026-06-21T22:29:41.2909772Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.2909881Z               "line": 1556
2026-06-21T22:29:41.2909971Z             }
2026-06-21T22:29:41.2910078Z           ]
2026-06-21T22:29:41.2910176Z         },
2026-06-21T22:29:41.2910281Z         "int": {
2026-06-21T22:29:41.2910383Z           "complete": false,
2026-06-21T22:29:41.2910491Z           "evidence": []
2026-06-21T22:29:41.2910595Z         },
2026-06-21T22:29:41.2910695Z         "unit": {
2026-06-21T22:29:41.2910812Z           "complete": true,
2026-06-21T22:29:41.2910921Z           "evidence": [
2026-06-21T22:29:41.2911022Z             {
2026-06-21T22:29:41.2911175Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T22:29:41.2911284Z               "line": 161
2026-06-21T22:29:41.2911385Z             }
2026-06-21T22:29:41.2911484Z           ]
2026-06-21T22:29:41.2911594Z         }
2026-06-21T22:29:41.2911690Z       }
2026-06-21T22:29:41.2911789Z     },
2026-06-21T22:29:41.2911889Z     {
2026-06-21T22:29:41.2912128Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T22:29:41.2913885Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T22:29:41.2914146Z       "requiredStages": [
2026-06-21T22:29:41.2914247Z         "impl",
2026-06-21T22:29:41.2914356Z         "unit"
2026-06-21T22:29:41.2914451Z       ],
2026-06-21T22:29:41.2914557Z       "stages": {
2026-06-21T22:29:41.2914662Z         "doc": {
2026-06-21T22:29:41.2914781Z           "complete": false,
2026-06-21T22:29:41.2914910Z           "evidence": []
2026-06-21T22:29:41.2915014Z         },
2026-06-21T22:29:41.2915119Z         "impl": {
2026-06-21T22:29:41.2915225Z           "complete": true,
2026-06-21T22:29:41.2915343Z           "evidence": [
2026-06-21T22:29:41.2915439Z             {
2026-06-21T22:29:41.2915591Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.2915696Z               "line": 257
2026-06-21T22:29:41.2915793Z             }
2026-06-21T22:29:41.2915892Z           ]
2026-06-21T22:29:41.2915995Z         },
2026-06-21T22:29:41.2916105Z         "int": {
2026-06-21T22:29:41.2916214Z           "complete": false,
2026-06-21T22:29:41.2916317Z           "evidence": []
2026-06-21T22:29:41.2916427Z         },
2026-06-21T22:29:41.2916528Z         "unit": {
2026-06-21T22:29:41.2916646Z           "complete": true,
2026-06-21T22:29:41.2916757Z           "evidence": [
2026-06-21T22:29:41.2916861Z             {
2026-06-21T22:29:41.2917014Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.2917129Z               "line": 360
2026-06-21T22:29:41.2917229Z             }
2026-06-21T22:29:41.2917323Z           ]
2026-06-21T22:29:41.2917434Z         }
2026-06-21T22:29:41.2917538Z       }
2026-06-21T22:29:41.2917638Z     },
2026-06-21T22:29:41.2917735Z     {
2026-06-21T22:29:41.2917863Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T22:29:41.2919750Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T22:29:41.2919897Z       "requiredStages": [
2026-06-21T22:29:41.2919994Z         "impl",
2026-06-21T22:29:41.2920098Z         "unit"
2026-06-21T22:29:41.2920198Z       ],
2026-06-21T22:29:41.2920289Z       "stages": {
2026-06-21T22:29:41.2920393Z         "doc": {
2026-06-21T22:29:41.2920508Z           "complete": false,
2026-06-21T22:29:41.2920619Z           "evidence": []
2026-06-21T22:29:41.2920722Z         },
2026-06-21T22:29:41.2920822Z         "impl": {
2026-06-21T22:29:41.2920934Z           "complete": true,
2026-06-21T22:29:41.2921046Z           "evidence": [
2026-06-21T22:29:41.2921150Z             {
2026-06-21T22:29:41.2921321Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.2921425Z               "line": 1018
2026-06-21T22:29:41.2921525Z             },
2026-06-21T22:29:41.2921630Z             {
2026-06-21T22:29:41.2921777Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2921887Z               "line": 283
2026-06-21T22:29:41.2922092Z             },
2026-06-21T22:29:41.2922188Z             {
2026-06-21T22:29:41.2922331Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2922440Z               "line": 316
2026-06-21T22:29:41.2922542Z             },
2026-06-21T22:29:41.2922641Z             {
2026-06-21T22:29:41.2922783Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T22:29:41.2922889Z               "line": 26
2026-06-21T22:29:41.2922989Z             }
2026-06-21T22:29:41.2923093Z           ]
2026-06-21T22:29:41.2923190Z         },
2026-06-21T22:29:41.2923298Z         "int": {
2026-06-21T22:29:41.2923403Z           "complete": false,
2026-06-21T22:29:41.2923627Z           "evidence": []
2026-06-21T22:29:41.2923723Z         },
2026-06-21T22:29:41.2923829Z         "unit": {
2026-06-21T22:29:41.2923937Z           "complete": true,
2026-06-21T22:29:41.2924041Z           "evidence": [
2026-06-21T22:29:41.2924147Z             {
2026-06-21T22:29:41.2924287Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T22:29:41.2924401Z               "line": 271
2026-06-21T22:29:41.2924507Z             },
2026-06-21T22:29:41.2924592Z             {
2026-06-21T22:29:41.2924730Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T22:29:41.2924836Z               "line": 348
2026-06-21T22:29:41.2924930Z             }
2026-06-21T22:29:41.2925031Z           ]
2026-06-21T22:29:41.2925127Z         }
2026-06-21T22:29:41.2925231Z       }
2026-06-21T22:29:41.2925331Z     },
2026-06-21T22:29:41.2925437Z     {
2026-06-21T22:29:41.2925560Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T22:29:41.2925761Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T22:29:41.2925879Z       "requiredStages": [
2026-06-21T22:29:41.2925985Z         "impl",
2026-06-21T22:29:41.2926095Z         "unit"
2026-06-21T22:29:41.2926194Z       ],
2026-06-21T22:29:41.2926305Z       "stages": {
2026-06-21T22:29:41.2926400Z         "doc": {
2026-06-21T22:29:41.2926523Z           "complete": false,
2026-06-21T22:29:41.2926627Z           "evidence": []
2026-06-21T22:29:41.2926727Z         },
2026-06-21T22:29:41.2926835Z         "impl": {
2026-06-21T22:29:41.2926934Z           "complete": true,
2026-06-21T22:29:41.2927045Z           "evidence": [
2026-06-21T22:29:41.2927145Z             {
2026-06-21T22:29:41.2927278Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2927389Z               "line": 40
2026-06-21T22:29:41.2927493Z             },
2026-06-21T22:29:41.2927588Z             {
2026-06-21T22:29:41.2927722Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2927831Z               "line": 103
2026-06-21T22:29:41.2927927Z             },
2026-06-21T22:29:41.2928027Z             {
2026-06-21T22:29:41.2928155Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2928251Z               "line": 218
2026-06-21T22:29:41.2928356Z             },
2026-06-21T22:29:41.2928456Z             {
2026-06-21T22:29:41.2928591Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2928694Z               "line": 323
2026-06-21T22:29:41.2928795Z             }
2026-06-21T22:29:41.2928896Z           ]
2026-06-21T22:29:41.2929080Z         },
2026-06-21T22:29:41.2929177Z         "int": {
2026-06-21T22:29:41.2929277Z           "complete": false,
2026-06-21T22:29:41.2929404Z           "evidence": []
2026-06-21T22:29:41.2929503Z         },
2026-06-21T22:29:41.2929610Z         "unit": {
2026-06-21T22:29:41.2929714Z           "complete": true,
2026-06-21T22:29:41.2929823Z           "evidence": [
2026-06-21T22:29:41.2929925Z             {
2026-06-21T22:29:41.2930057Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2930167Z               "line": 361
2026-06-21T22:29:41.2930272Z             },
2026-06-21T22:29:41.2930376Z             {
2026-06-21T22:29:41.2930506Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2930606Z               "line": 433
2026-06-21T22:29:41.2930801Z             },
2026-06-21T22:29:41.2930897Z             {
2026-06-21T22:29:41.2931039Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2931141Z               "line": 496
2026-06-21T22:29:41.2931245Z             },
2026-06-21T22:29:41.2931349Z             {
2026-06-21T22:29:41.2931479Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2931588Z               "line": 517
2026-06-21T22:29:41.2931687Z             }
2026-06-21T22:29:41.2931791Z           ]
2026-06-21T22:29:41.2931891Z         }
2026-06-21T22:29:41.2931990Z       }
2026-06-21T22:29:41.2932085Z     },
2026-06-21T22:29:41.2932181Z     {
2026-06-21T22:29:41.2932447Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T22:29:41.2934767Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T22:29:41.2934895Z       "requiredStages": [
2026-06-21T22:29:41.2934990Z         "impl",
2026-06-21T22:29:41.2935096Z         "unit"
2026-06-21T22:29:41.2935200Z       ],
2026-06-21T22:29:41.2935305Z       "stages": {
2026-06-21T22:29:41.2935410Z         "doc": {
2026-06-21T22:29:41.2935519Z           "complete": false,
2026-06-21T22:29:41.2935625Z           "evidence": []
2026-06-21T22:29:41.2935730Z         },
2026-06-21T22:29:41.2935834Z         "impl": {
2026-06-21T22:29:41.2935964Z           "complete": true,
2026-06-21T22:29:41.2936073Z           "evidence": [
2026-06-21T22:29:41.2936178Z             {
2026-06-21T22:29:41.2936326Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.2936425Z               "line": 402
2026-06-21T22:29:41.2936535Z             },
2026-06-21T22:29:41.2936632Z             {
2026-06-21T22:29:41.2936778Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.2936884Z               "line": 446
2026-06-21T22:29:41.2936979Z             }
2026-06-21T22:29:41.2937088Z           ]
2026-06-21T22:29:41.2937187Z         },
2026-06-21T22:29:41.2937292Z         "int": {
2026-06-21T22:29:41.2937395Z           "complete": false,
2026-06-21T22:29:41.2937499Z           "evidence": []
2026-06-21T22:29:41.2937600Z         },
2026-06-21T22:29:41.2937700Z         "unit": {
2026-06-21T22:29:41.2937809Z           "complete": true,
2026-06-21T22:29:41.2937915Z           "evidence": [
2026-06-21T22:29:41.2938020Z             {
2026-06-21T22:29:41.2938162Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.2938263Z               "line": 910
2026-06-21T22:29:41.2938363Z             }
2026-06-21T22:29:41.2938468Z           ]
2026-06-21T22:29:41.2938568Z         }
2026-06-21T22:29:41.2938663Z       }
2026-06-21T22:29:41.2938768Z     },
2026-06-21T22:29:41.2938864Z     {
2026-06-21T22:29:41.2939078Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T22:29:41.2939222Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T22:29:41.2939350Z       "requiredStages": [
2026-06-21T22:29:41.2939451Z         "impl",
2026-06-21T22:29:41.2939551Z         "unit"
2026-06-21T22:29:41.2939640Z       ],
2026-06-21T22:29:41.2939742Z       "stages": {
2026-06-21T22:29:41.2939842Z         "doc": {
2026-06-21T22:29:41.2939945Z           "complete": false,
2026-06-21T22:29:41.2940054Z           "evidence": []
2026-06-21T22:29:41.2940160Z         },
2026-06-21T22:29:41.2940369Z         "impl": {
2026-06-21T22:29:41.2940475Z           "complete": true,
2026-06-21T22:29:41.2940580Z           "evidence": [
2026-06-21T22:29:41.2940679Z             {
2026-06-21T22:29:41.2940809Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2940923Z               "line": 116
2026-06-21T22:29:41.2941013Z             },
2026-06-21T22:29:41.2941104Z             {
2026-06-21T22:29:41.2941238Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2941342Z               "line": 211
2026-06-21T22:29:41.2941448Z             }
2026-06-21T22:29:41.2941537Z           ]
2026-06-21T22:29:41.2941637Z         },
2026-06-21T22:29:41.2941847Z         "int": {
2026-06-21T22:29:41.2941957Z           "complete": false,
2026-06-21T22:29:41.2942068Z           "evidence": []
2026-06-21T22:29:41.2942167Z         },
2026-06-21T22:29:41.2942271Z         "unit": {
2026-06-21T22:29:41.2942375Z           "complete": true,
2026-06-21T22:29:41.2942484Z           "evidence": [
2026-06-21T22:29:41.2942592Z             {
2026-06-21T22:29:41.2942736Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2942845Z               "line": 388
2026-06-21T22:29:41.2942945Z             },
2026-06-21T22:29:41.2943047Z             {
2026-06-21T22:29:41.2943174Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.2943289Z               "line": 469
2026-06-21T22:29:41.2943389Z             }
2026-06-21T22:29:41.2943489Z           ]
2026-06-21T22:29:41.2943594Z         }
2026-06-21T22:29:41.2943686Z       }
2026-06-21T22:29:41.2943790Z     },
2026-06-21T22:29:41.2943890Z     {
2026-06-21T22:29:41.2944033Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T22:29:41.2945170Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T22:29:41.2945286Z       "requiredStages": [
2026-06-21T22:29:41.2945383Z         "impl",
2026-06-21T22:29:41.2945474Z         "unit"
2026-06-21T22:29:41.2945574Z       ],
2026-06-21T22:29:41.2945675Z       "stages": {
2026-06-21T22:29:41.2945779Z         "doc": {
2026-06-21T22:29:41.2945890Z           "complete": true,
2026-06-21T22:29:41.2945990Z           "evidence": [
2026-06-21T22:29:41.2946094Z             {
2026-06-21T22:29:41.2946229Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.2946338Z               "line": 206
2026-06-21T22:29:41.2946461Z             }
2026-06-21T22:29:41.2946562Z           ]
2026-06-21T22:29:41.2946662Z         },
2026-06-21T22:29:41.2946761Z         "impl": {
2026-06-21T22:29:41.2946882Z           "complete": true,
2026-06-21T22:29:41.2946985Z           "evidence": [
2026-06-21T22:29:41.2947086Z             {
2026-06-21T22:29:41.2947229Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2947367Z               "line": 691
2026-06-21T22:29:41.2947468Z             },
2026-06-21T22:29:41.2947568Z             {
2026-06-21T22:29:41.2947704Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2947810Z               "line": 791
2026-06-21T22:29:41.2947922Z             },
2026-06-21T22:29:41.2948026Z             {
2026-06-21T22:29:41.2948160Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2948270Z               "line": 1120
2026-06-21T22:29:41.2948369Z             },
2026-06-21T22:29:41.2948475Z             {
2026-06-21T22:29:41.2948617Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.2948732Z               "line": 184
2026-06-21T22:29:41.2948837Z             }
2026-06-21T22:29:41.2948932Z           ]
2026-06-21T22:29:41.2949096Z         },
2026-06-21T22:29:41.2949190Z         "int": {
2026-06-21T22:29:41.2949304Z           "complete": false,
2026-06-21T22:29:41.2949667Z           "evidence": []
2026-06-21T22:29:41.2949791Z         },
2026-06-21T22:29:41.2949891Z         "unit": {
2026-06-21T22:29:41.2949992Z           "complete": true,
2026-06-21T22:29:41.2950097Z           "evidence": [
2026-06-21T22:29:41.2950186Z             {
2026-06-21T22:29:41.2950326Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.2950430Z               "line": 1169
2026-06-21T22:29:41.2950524Z             },
2026-06-21T22:29:41.2950633Z             {
2026-06-21T22:29:41.2950773Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T22:29:41.2950881Z               "line": 44
2026-06-21T22:29:41.2951073Z             },
2026-06-21T22:29:41.2951177Z             {
2026-06-21T22:29:41.2951331Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T22:29:41.2951440Z               "line": 52
2026-06-21T22:29:41.2951539Z             },
2026-06-21T22:29:41.2951626Z             {
2026-06-21T22:29:41.2951764Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T22:29:41.2951873Z               "line": 57
2026-06-21T22:29:41.2951979Z             },
2026-06-21T22:29:41.2952069Z             {
2026-06-21T22:29:41.2952227Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T22:29:41.2952337Z               "line": 54
2026-06-21T22:29:41.2952426Z             }
2026-06-21T22:29:41.2952527Z           ]
2026-06-21T22:29:41.2952628Z         }
2026-06-21T22:29:41.2952732Z       }
2026-06-21T22:29:41.2952831Z     },
2026-06-21T22:29:41.2952917Z     {
2026-06-21T22:29:41.2953067Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T22:29:41.2953306Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T22:29:41.2953424Z       "requiredStages": [
2026-06-21T22:29:41.2953524Z         "impl",
2026-06-21T22:29:41.2953621Z         "unit"
2026-06-21T22:29:41.2953725Z       ],
2026-06-21T22:29:41.2953829Z       "stages": {
2026-06-21T22:29:41.2953936Z         "doc": {
2026-06-21T22:29:41.2954054Z           "complete": false,
2026-06-21T22:29:41.2954164Z           "evidence": []
2026-06-21T22:29:41.2954260Z         },
2026-06-21T22:29:41.2954369Z         "impl": {
2026-06-21T22:29:41.2954473Z           "complete": true,
2026-06-21T22:29:41.2954579Z           "evidence": [
2026-06-21T22:29:41.2954684Z             {
2026-06-21T22:29:41.2954823Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2954936Z               "line": 26
2026-06-21T22:29:41.2955027Z             },
2026-06-21T22:29:41.2955123Z             {
2026-06-21T22:29:41.2955256Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2955360Z               "line": 135
2026-06-21T22:29:41.2955457Z             },
2026-06-21T22:29:41.2955557Z             {
2026-06-21T22:29:41.2955717Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2955827Z               "line": 26
2026-06-21T22:29:41.2955935Z             },
2026-06-21T22:29:41.2956043Z             {
2026-06-21T22:29:41.2956187Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2956301Z               "line": 237
2026-06-21T22:29:41.2956401Z             }
2026-06-21T22:29:41.2956497Z           ]
2026-06-21T22:29:41.2956597Z         },
2026-06-21T22:29:41.2956696Z         "int": {
2026-06-21T22:29:41.2956803Z           "complete": false,
2026-06-21T22:29:41.2956912Z           "evidence": []
2026-06-21T22:29:41.2957016Z         },
2026-06-21T22:29:41.2957122Z         "unit": {
2026-06-21T22:29:41.2957245Z           "complete": true,
2026-06-21T22:29:41.2957350Z           "evidence": [
2026-06-21T22:29:41.2957451Z             {
2026-06-21T22:29:41.2957603Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2957699Z               "line": 161
2026-06-21T22:29:41.2957808Z             },
2026-06-21T22:29:41.2960527Z             {
2026-06-21T22:29:41.2960727Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2960990Z               "line": 170
2026-06-21T22:29:41.2961099Z             },
2026-06-21T22:29:41.2961203Z             {
2026-06-21T22:29:41.2961347Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2961460Z               "line": 179
2026-06-21T22:29:41.2961552Z             },
2026-06-21T22:29:41.2961652Z             {
2026-06-21T22:29:41.2961789Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2961905Z               "line": 190
2026-06-21T22:29:41.2962005Z             },
2026-06-21T22:29:41.2962104Z             {
2026-06-21T22:29:41.2962248Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2962443Z               "line": 199
2026-06-21T22:29:41.2962558Z             },
2026-06-21T22:29:41.2962658Z             {
2026-06-21T22:29:41.2962787Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2962901Z               "line": 216
2026-06-21T22:29:41.2963000Z             },
2026-06-21T22:29:41.2963106Z             {
2026-06-21T22:29:41.2963245Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T22:29:41.2963343Z               "line": 242
2026-06-21T22:29:41.2963448Z             },
2026-06-21T22:29:41.2963553Z             {
2026-06-21T22:29:41.2963684Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2963785Z               "line": 295
2026-06-21T22:29:41.2963885Z             },
2026-06-21T22:29:41.2963980Z             {
2026-06-21T22:29:41.2964119Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.2964228Z               "line": 244
2026-06-21T22:29:41.2964332Z             },
2026-06-21T22:29:41.2964439Z             {
2026-06-21T22:29:41.2964590Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2964705Z               "line": 265
2026-06-21T22:29:41.2964796Z             },
2026-06-21T22:29:41.2964891Z             {
2026-06-21T22:29:41.2965048Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2965158Z               "line": 293
2026-06-21T22:29:41.2965263Z             },
2026-06-21T22:29:41.2965358Z             {
2026-06-21T22:29:41.2965511Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2965620Z               "line": 317
2026-06-21T22:29:41.2965722Z             },
2026-06-21T22:29:41.2965830Z             {
2026-06-21T22:29:41.2965974Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T22:29:41.2966079Z               "line": 327
2026-06-21T22:29:41.2966173Z             },
2026-06-21T22:29:41.2966282Z             {
2026-06-21T22:29:41.2966429Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.2966546Z               "line": 540
2026-06-21T22:29:41.2966647Z             }
2026-06-21T22:29:41.2966743Z           ]
2026-06-21T22:29:41.2966838Z         }
2026-06-21T22:29:41.2966937Z       }
2026-06-21T22:29:41.2967034Z     },
2026-06-21T22:29:41.2967125Z     {
2026-06-21T22:29:41.2967266Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T22:29:41.2972198Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T22:29:41.2972603Z       "requiredStages": [],
2026-06-21T22:29:41.2972708Z       "stages": {
2026-06-21T22:29:41.2972804Z         "doc": {
2026-06-21T22:29:41.2972918Z           "complete": false,
2026-06-21T22:29:41.2973022Z           "evidence": []
2026-06-21T22:29:41.2973123Z         },
2026-06-21T22:29:41.2973227Z         "impl": {
2026-06-21T22:29:41.2973371Z           "complete": false,
2026-06-21T22:29:41.2973471Z           "evidence": []
2026-06-21T22:29:41.2973575Z         },
2026-06-21T22:29:41.2973686Z         "int": {
2026-06-21T22:29:41.2973786Z           "complete": false,
2026-06-21T22:29:41.2973899Z           "evidence": []
2026-06-21T22:29:41.2973999Z         },
2026-06-21T22:29:41.2974099Z         "unit": {
2026-06-21T22:29:41.2974207Z           "complete": false,
2026-06-21T22:29:41.2974320Z           "evidence": []
2026-06-21T22:29:41.2974417Z         }
2026-06-21T22:29:41.2974516Z       }
2026-06-21T22:29:41.2974621Z     },
2026-06-21T22:29:41.2974707Z     {
2026-06-21T22:29:41.2974845Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T22:29:41.2976414Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T22:29:41.2976548Z       "requiredStages": [
2026-06-21T22:29:41.2976658Z         "impl",
2026-06-21T22:29:41.2976757Z         "unit",
2026-06-21T22:29:41.2976866Z         "int"
2026-06-21T22:29:41.2976966Z       ],
2026-06-21T22:29:41.2977069Z       "stages": {
2026-06-21T22:29:41.2977173Z         "doc": {
2026-06-21T22:29:41.2977284Z           "complete": false,
2026-06-21T22:29:41.2977398Z           "evidence": []
2026-06-21T22:29:41.2977512Z         },
2026-06-21T22:29:41.2977613Z         "impl": {
2026-06-21T22:29:41.2977731Z           "complete": true,
2026-06-21T22:29:41.2977841Z           "evidence": [
2026-06-21T22:29:41.2977937Z             {
2026-06-21T22:29:41.2978088Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2978190Z               "line": 538
2026-06-21T22:29:41.2978294Z             },
2026-06-21T22:29:41.2978394Z             {
2026-06-21T22:29:41.2978538Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.2978646Z               "line": 641
2026-06-21T22:29:41.2978752Z             },
2026-06-21T22:29:41.2978848Z             {
2026-06-21T22:29:41.2979096Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T22:29:41.2979201Z               "line": 21
2026-06-21T22:29:41.2979304Z             }
2026-06-21T22:29:41.2979408Z           ]
2026-06-21T22:29:41.2979509Z         },
2026-06-21T22:29:41.2979612Z         "int": {
2026-06-21T22:29:41.2979721Z           "complete": true,
2026-06-21T22:29:41.2979831Z           "evidence": [
2026-06-21T22:29:41.2979932Z             {
2026-06-21T22:29:41.2980098Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T22:29:41.2980208Z               "line": 236
2026-06-21T22:29:41.2980518Z             },
2026-06-21T22:29:41.2980622Z             {
2026-06-21T22:29:41.2980785Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T22:29:41.2981189Z               "line": 396
2026-06-21T22:29:41.2981415Z             },
2026-06-21T22:29:41.2981643Z             {
2026-06-21T22:29:41.2981914Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.2982224Z               "line": 1496
2026-06-21T22:29:41.2982463Z             },
2026-06-21T22:29:41.2982667Z             {
2026-06-21T22:29:41.2982933Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.2983359Z               "line": 1648
2026-06-21T22:29:41.2983582Z             }
2026-06-21T22:29:41.2983764Z           ]
2026-06-21T22:29:41.2983951Z         },
2026-06-21T22:29:41.2984135Z         "unit": {
2026-06-21T22:29:41.2984341Z           "complete": true,
2026-06-21T22:29:41.2984568Z           "evidence": [
2026-06-21T22:29:41.2984776Z             {
2026-06-21T22:29:41.2985020Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.2985311Z               "line": 887
2026-06-21T22:29:41.2985569Z             }
2026-06-21T22:29:41.2985786Z           ]
2026-06-21T22:29:41.2985983Z         }
2026-06-21T22:29:41.2986178Z       }
2026-06-21T22:29:41.2986368Z     },
2026-06-21T22:29:41.2986565Z     {
2026-06-21T22:29:41.2986794Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T22:29:41.2987127Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T22:29:41.2987431Z       "requiredStages": [
2026-06-21T22:29:41.2987643Z         "impl",
2026-06-21T22:29:41.2987844Z         "unit"
2026-06-21T22:29:41.2988053Z       ],
2026-06-21T22:29:41.2988249Z       "stages": {
2026-06-21T22:29:41.2988459Z         "doc": {
2026-06-21T22:29:41.2988672Z           "complete": false,
2026-06-21T22:29:41.2988907Z           "evidence": []
2026-06-21T22:29:41.2989193Z         },
2026-06-21T22:29:41.2989413Z         "impl": {
2026-06-21T22:29:41.2989626Z           "complete": true,
2026-06-21T22:29:41.2989860Z           "evidence": [
2026-06-21T22:29:41.2990059Z             {
2026-06-21T22:29:41.2990295Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.2990581Z               "line": 25
2026-06-21T22:29:41.2990802Z             },
2026-06-21T22:29:41.2990993Z             {
2026-06-21T22:29:41.2991225Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2991493Z               "line": 26
2026-06-21T22:29:41.2991703Z             },
2026-06-21T22:29:41.2991898Z             {
2026-06-21T22:29:41.2992122Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2992403Z               "line": 159
2026-06-21T22:29:41.2992614Z             }
2026-06-21T22:29:41.2992798Z           ]
2026-06-21T22:29:41.2992989Z         },
2026-06-21T22:29:41.2993184Z         "int": {
2026-06-21T22:29:41.2993451Z           "complete": false,
2026-06-21T22:29:41.2993686Z           "evidence": []
2026-06-21T22:29:41.2993934Z         },
2026-06-21T22:29:41.2994133Z         "unit": {
2026-06-21T22:29:41.2994338Z           "complete": true,
2026-06-21T22:29:41.2994559Z           "evidence": [
2026-06-21T22:29:41.2994777Z             {
2026-06-21T22:29:41.2995005Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.2995275Z               "line": 188
2026-06-21T22:29:41.2995494Z             },
2026-06-21T22:29:41.2995689Z             {
2026-06-21T22:29:41.2995918Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.2996190Z               "line": 240
2026-06-21T22:29:41.2996405Z             },
2026-06-21T22:29:41.2996595Z             {
2026-06-21T22:29:41.2996829Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.2997102Z               "line": 186
2026-06-21T22:29:41.2997315Z             }
2026-06-21T22:29:41.2997515Z           ]
2026-06-21T22:29:41.2997702Z         }
2026-06-21T22:29:41.2997891Z       }
2026-06-21T22:29:41.2998077Z     },
2026-06-21T22:29:41.2998423Z     {
2026-06-21T22:29:41.2998632Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T22:29:41.2999134Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T22:29:41.2999481Z       "requiredStages": [
2026-06-21T22:29:41.2999729Z         "impl",
2026-06-21T22:29:41.2999940Z         "unit"
2026-06-21T22:29:41.3000129Z       ],
2026-06-21T22:29:41.3000321Z       "stages": {
2026-06-21T22:29:41.3000519Z         "doc": {
2026-06-21T22:29:41.3000756Z           "complete": false,
2026-06-21T22:29:41.3001019Z           "evidence": []
2026-06-21T22:29:41.3001233Z         },
2026-06-21T22:29:41.3001437Z         "impl": {
2026-06-21T22:29:41.3001838Z           "complete": true,
2026-06-21T22:29:41.3002072Z           "evidence": [
2026-06-21T22:29:41.3002282Z             {
2026-06-21T22:29:41.3002516Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3002787Z               "line": 48
2026-06-21T22:29:41.3002996Z             },
2026-06-21T22:29:41.3003213Z             {
2026-06-21T22:29:41.3003463Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3003739Z               "line": 55
2026-06-21T22:29:41.3003959Z             },
2026-06-21T22:29:41.3004160Z             {
2026-06-21T22:29:41.3004393Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3004679Z               "line": 74
2026-06-21T22:29:41.3004884Z             },
2026-06-21T22:29:41.3005076Z             {
2026-06-21T22:29:41.3005313Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3005574Z               "line": 91
2026-06-21T22:29:41.3005803Z             }
2026-06-21T22:29:41.3006001Z           ]
2026-06-21T22:29:41.3006196Z         },
2026-06-21T22:29:41.3006388Z         "int": {
2026-06-21T22:29:41.3006597Z           "complete": false,
2026-06-21T22:29:41.3006831Z           "evidence": []
2026-06-21T22:29:41.3007042Z         },
2026-06-21T22:29:41.3007241Z         "unit": {
2026-06-21T22:29:41.3007465Z           "complete": true,
2026-06-21T22:29:41.3007699Z           "evidence": [
2026-06-21T22:29:41.3007909Z             {
2026-06-21T22:29:41.3008137Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3008418Z               "line": 149
2026-06-21T22:29:41.3008642Z             },
2026-06-21T22:29:41.3008839Z             {
2026-06-21T22:29:41.3009144Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3009431Z               "line": 166
2026-06-21T22:29:41.3009646Z             },
2026-06-21T22:29:41.3009832Z             {
2026-06-21T22:29:41.3010065Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3010346Z               "line": 176
2026-06-21T22:29:41.3010566Z             },
2026-06-21T22:29:41.3010771Z             {
2026-06-21T22:29:41.3011004Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3011274Z               "line": 194
2026-06-21T22:29:41.3011488Z             },
2026-06-21T22:29:41.3011697Z             {
2026-06-21T22:29:41.3011936Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3012208Z               "line": 207
2026-06-21T22:29:41.3012438Z             }
2026-06-21T22:29:41.3012632Z           ]
2026-06-21T22:29:41.3012818Z         }
2026-06-21T22:29:41.3013018Z       }
2026-06-21T22:29:41.3013199Z     },
2026-06-21T22:29:41.3013382Z     {
2026-06-21T22:29:41.3013605Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T22:29:41.3013985Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T22:29:41.3014348Z       "requiredStages": [
2026-06-21T22:29:41.3014566Z         "impl",
2026-06-21T22:29:41.3014781Z         "unit"
2026-06-21T22:29:41.3014972Z       ],
2026-06-21T22:29:41.3015168Z       "stages": {
2026-06-21T22:29:41.3015359Z         "doc": {
2026-06-21T22:29:41.3015573Z           "complete": false,
2026-06-21T22:29:41.3015816Z           "evidence": []
2026-06-21T22:29:41.3016031Z         },
2026-06-21T22:29:41.3016354Z         "impl": {
2026-06-21T22:29:41.3016571Z           "complete": true,
2026-06-21T22:29:41.3016804Z           "evidence": [
2026-06-21T22:29:41.3017014Z             {
2026-06-21T22:29:41.3017258Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3017540Z               "line": 466
2026-06-21T22:29:41.3017762Z             },
2026-06-21T22:29:41.3017949Z             {
2026-06-21T22:29:41.3018179Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3018450Z               "line": 26
2026-06-21T22:29:41.3018659Z             }
2026-06-21T22:29:41.3018856Z           ]
2026-06-21T22:29:41.3019126Z         },
2026-06-21T22:29:41.3019448Z         "int": {
2026-06-21T22:29:41.3019662Z           "complete": false,
2026-06-21T22:29:41.3019891Z           "evidence": []
2026-06-21T22:29:41.3020111Z         },
2026-06-21T22:29:41.3020310Z         "unit": {
2026-06-21T22:29:41.3020534Z           "complete": true,
2026-06-21T22:29:41.3020760Z           "evidence": [
2026-06-21T22:29:41.3020978Z             {
2026-06-21T22:29:41.3021211Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3021489Z               "line": 150
2026-06-21T22:29:41.3021716Z             },
2026-06-21T22:29:41.3021914Z             {
2026-06-21T22:29:41.3022144Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3022425Z               "line": 208
2026-06-21T22:29:41.3022644Z             }
2026-06-21T22:29:41.3022839Z           ]
2026-06-21T22:29:41.3023035Z         }
2026-06-21T22:29:41.3023230Z       }
2026-06-21T22:29:41.3023412Z     },
2026-06-21T22:29:41.3023593Z     {
2026-06-21T22:29:41.3023836Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T22:29:41.3033146Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T22:29:41.3041497Z       "requiredStages": [
2026-06-21T22:29:41.3041731Z         "impl",
2026-06-21T22:29:41.3041937Z         "unit",
2026-06-21T22:29:41.3042137Z         "int"
2026-06-21T22:29:41.3042355Z       ],
2026-06-21T22:29:41.3042538Z       "stages": {
2026-06-21T22:29:41.3042736Z         "doc": {
2026-06-21T22:29:41.3042945Z           "complete": false,
2026-06-21T22:29:41.3043192Z           "evidence": []
2026-06-21T22:29:41.3043410Z         },
2026-06-21T22:29:41.3043607Z         "impl": {
2026-06-21T22:29:41.3043817Z           "complete": true,
2026-06-21T22:29:41.3044054Z           "evidence": [
2026-06-21T22:29:41.3044260Z             {
2026-06-21T22:29:41.3044499Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3044790Z               "line": 99
2026-06-21T22:29:41.3045008Z             },
2026-06-21T22:29:41.3045208Z             {
2026-06-21T22:29:41.3045439Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3045728Z               "line": 201
2026-06-21T22:29:41.3045946Z             }
2026-06-21T22:29:41.3046138Z           ]
2026-06-21T22:29:41.3046328Z         },
2026-06-21T22:29:41.3046528Z         "int": {
2026-06-21T22:29:41.3046748Z           "complete": true,
2026-06-21T22:29:41.3046997Z           "evidence": [
2026-06-21T22:29:41.3047215Z             {
2026-06-21T22:29:41.3047482Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3047797Z               "line": 737
2026-06-21T22:29:41.3048015Z             }
2026-06-21T22:29:41.3048208Z           ]
2026-06-21T22:29:41.3048395Z         },
2026-06-21T22:29:41.3048590Z         "unit": {
2026-06-21T22:29:41.3048809Z           "complete": true,
2026-06-21T22:29:41.3049090Z           "evidence": [
2026-06-21T22:29:41.3049320Z             {
2026-06-21T22:29:41.3049554Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3049835Z               "line": 517
2026-06-21T22:29:41.3050049Z             },
2026-06-21T22:29:41.3050250Z             {
2026-06-21T22:29:41.3050484Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3050753Z               "line": 576
2026-06-21T22:29:41.3050966Z             }
2026-06-21T22:29:41.3051171Z           ]
2026-06-21T22:29:41.3051361Z         }
2026-06-21T22:29:41.3051553Z       }
2026-06-21T22:29:41.3051748Z     },
2026-06-21T22:29:41.3051944Z     {
2026-06-21T22:29:41.3052168Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T22:29:41.3053695Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T22:29:41.3054948Z       "requiredStages": [
2026-06-21T22:29:41.3055168Z         "doc",
2026-06-21T22:29:41.3055374Z         "impl",
2026-06-21T22:29:41.3055569Z         "unit"
2026-06-21T22:29:41.3055768Z       ],
2026-06-21T22:29:41.3055966Z       "stages": {
2026-06-21T22:29:41.3056307Z         "doc": {
2026-06-21T22:29:41.3056535Z           "complete": true,
2026-06-21T22:29:41.3056769Z           "evidence": [
2026-06-21T22:29:41.3056993Z             {
2026-06-21T22:29:41.3057227Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3057484Z               "line": 214
2026-06-21T22:29:41.3057694Z             }
2026-06-21T22:29:41.3057886Z           ]
2026-06-21T22:29:41.3058085Z         },
2026-06-21T22:29:41.3058286Z         "impl": {
2026-06-21T22:29:41.3058508Z           "complete": true,
2026-06-21T22:29:41.3058744Z           "evidence": [
2026-06-21T22:29:41.3059026Z             {
2026-06-21T22:29:41.3059260Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3063658Z               "line": 56
2026-06-21T22:29:41.3063918Z             },
2026-06-21T22:29:41.3064121Z             {
2026-06-21T22:29:41.3064365Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3064661Z               "line": 580
2026-06-21T22:29:41.3064889Z             },
2026-06-21T22:29:41.3065089Z             {
2026-06-21T22:29:41.3065333Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3065624Z               "line": 36
2026-06-21T22:29:41.3065833Z             },
2026-06-21T22:29:41.3066028Z             {
2026-06-21T22:29:41.3066268Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3066554Z               "line": 59
2026-06-21T22:29:41.3066775Z             },
2026-06-21T22:29:41.3066972Z             {
2026-06-21T22:29:41.3067206Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3067488Z               "line": 83
2026-06-21T22:29:41.3067701Z             },
2026-06-21T22:29:41.3067902Z             {
2026-06-21T22:29:41.3068136Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3068422Z               "line": 140
2026-06-21T22:29:41.3068640Z             },
2026-06-21T22:29:41.3068836Z             {
2026-06-21T22:29:41.3069149Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3069434Z               "line": 159
2026-06-21T22:29:41.3069652Z             },
2026-06-21T22:29:41.3069853Z             {
2026-06-21T22:29:41.3070092Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3070369Z               "line": 384
2026-06-21T22:29:41.3070597Z             },
2026-06-21T22:29:41.3070797Z             {
2026-06-21T22:29:41.3071037Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3071309Z               "line": 535
2026-06-21T22:29:41.3071527Z             },
2026-06-21T22:29:41.3071727Z             {
2026-06-21T22:29:41.3071969Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3072253Z               "line": 581
2026-06-21T22:29:41.3072482Z             },
2026-06-21T22:29:41.3072678Z             {
2026-06-21T22:29:41.3072917Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3073197Z               "line": 300
2026-06-21T22:29:41.3073426Z             },
2026-06-21T22:29:41.3073627Z             {
2026-06-21T22:29:41.3073846Z               "path": "crates/spt/src/main.rs",
2026-06-21T22:29:41.3074122Z               "line": 42
2026-06-21T22:29:41.3074341Z             }
2026-06-21T22:29:41.3074545Z           ]
2026-06-21T22:29:41.3074733Z         },
2026-06-21T22:29:41.3074930Z         "int": {
2026-06-21T22:29:41.3075149Z           "complete": false,
2026-06-21T22:29:41.3075391Z           "evidence": []
2026-06-21T22:29:41.3075602Z         },
2026-06-21T22:29:41.3075793Z         "unit": {
2026-06-21T22:29:41.3075997Z           "complete": true,
2026-06-21T22:29:41.3076231Z           "evidence": [
2026-06-21T22:29:41.3076446Z             {
2026-06-21T22:29:41.3076699Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3076970Z               "line": 813
2026-06-21T22:29:41.3077185Z             },
2026-06-21T22:29:41.3077389Z             {
2026-06-21T22:29:41.3077632Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3078062Z               "line": 854
2026-06-21T22:29:41.3078270Z             },
2026-06-21T22:29:41.3078457Z             {
2026-06-21T22:29:41.3078696Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3079059Z               "line": 928
2026-06-21T22:29:41.3079277Z             }
2026-06-21T22:29:41.3079477Z           ]
2026-06-21T22:29:41.3079667Z         }
2026-06-21T22:29:41.3079860Z       }
2026-06-21T22:29:41.3080047Z     },
2026-06-21T22:29:41.3080246Z     {
2026-06-21T22:29:41.3080489Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T22:29:41.3085608Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T22:29:41.3090372Z       "requiredStages": [
2026-06-21T22:29:41.3090597Z         "impl",
2026-06-21T22:29:41.3090806Z         "unit",
2026-06-21T22:29:41.3090997Z         "int"
2026-06-21T22:29:41.3091189Z       ],
2026-06-21T22:29:41.3091388Z       "stages": {
2026-06-21T22:29:41.3091593Z         "doc": {
2026-06-21T22:29:41.3091823Z           "complete": false,
2026-06-21T22:29:41.3092060Z           "evidence": []
2026-06-21T22:29:41.3092285Z         },
2026-06-21T22:29:41.3092481Z         "impl": {
2026-06-21T22:29:41.3092695Z           "complete": true,
2026-06-21T22:29:41.3092947Z           "evidence": [
2026-06-21T22:29:41.3093156Z             {
2026-06-21T22:29:41.3093416Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3093707Z               "line": 115
2026-06-21T22:29:41.3093921Z             }
2026-06-21T22:29:41.3094112Z           ]
2026-06-21T22:29:41.3094308Z         },
2026-06-21T22:29:41.3094499Z         "int": {
2026-06-21T22:29:41.3094710Z           "complete": true,
2026-06-21T22:29:41.3094947Z           "evidence": [
2026-06-21T22:29:41.3095161Z             {
2026-06-21T22:29:41.3095419Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T22:29:41.3095717Z               "line": 296
2026-06-21T22:29:41.3095940Z             }
2026-06-21T22:29:41.3096140Z           ]
2026-06-21T22:29:41.3096336Z         },
2026-06-21T22:29:41.3096531Z         "unit": {
2026-06-21T22:29:41.3096746Z           "complete": true,
2026-06-21T22:29:41.3096989Z           "evidence": [
2026-06-21T22:29:41.3097208Z             {
2026-06-21T22:29:41.3097447Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3097858Z               "line": 464
2026-06-21T22:29:41.3098076Z             }
2026-06-21T22:29:41.3098268Z           ]
2026-06-21T22:29:41.3098456Z         }
2026-06-21T22:29:41.3098648Z       }
2026-06-21T22:29:41.3098848Z     },
2026-06-21T22:29:41.3099114Z     {
2026-06-21T22:29:41.3099329Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T22:29:41.3102845Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T22:29:41.3106135Z       "requiredStages": [
2026-06-21T22:29:41.3106352Z         "impl",
2026-06-21T22:29:41.3106562Z         "unit",
2026-06-21T22:29:41.3106781Z         "int"
2026-06-21T22:29:41.3106977Z       ],
2026-06-21T22:29:41.3107164Z       "stages": {
2026-06-21T22:29:41.3107372Z         "doc": {
2026-06-21T22:29:41.3107582Z           "complete": false,
2026-06-21T22:29:41.3107822Z           "evidence": []
2026-06-21T22:29:41.3108040Z         },
2026-06-21T22:29:41.3108236Z         "impl": {
2026-06-21T22:29:41.3108480Z           "complete": true,
2026-06-21T22:29:41.3108709Z           "evidence": [
2026-06-21T22:29:41.3108922Z             {
2026-06-21T22:29:41.3109265Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3109560Z               "line": 123
2026-06-21T22:29:41.3109776Z             },
2026-06-21T22:29:41.3109975Z             {
2026-06-21T22:29:41.3110209Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.3110485Z               "line": 134
2026-06-21T22:29:41.3110705Z             }
2026-06-21T22:29:41.3110900Z           ]
2026-06-21T22:29:41.3111092Z         },
2026-06-21T22:29:41.3111290Z         "int": {
2026-06-21T22:29:41.3111497Z           "complete": true,
2026-06-21T22:29:41.3111732Z           "evidence": [
2026-06-21T22:29:41.3111951Z             {
2026-06-21T22:29:41.3112193Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.3112484Z               "line": 312
2026-06-21T22:29:41.3112709Z             },
2026-06-21T22:29:41.3112905Z             {
2026-06-21T22:29:41.3113137Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.3113420Z               "line": 525
2026-06-21T22:29:41.3113635Z             }
2026-06-21T22:29:41.3113835Z           ]
2026-06-21T22:29:41.3114029Z         },
2026-06-21T22:29:41.3114229Z         "unit": {
2026-06-21T22:29:41.3114450Z           "complete": true,
2026-06-21T22:29:41.3114675Z           "evidence": [
2026-06-21T22:29:41.3114886Z             {
2026-06-21T22:29:41.3115133Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3115428Z               "line": 250
2026-06-21T22:29:41.3115652Z             }
2026-06-21T22:29:41.3115853Z           ]
2026-06-21T22:29:41.3116043Z         }
2026-06-21T22:29:41.3116229Z       }
2026-06-21T22:29:41.3116430Z     },
2026-06-21T22:29:41.3116619Z     {
2026-06-21T22:29:41.3116847Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T22:29:41.3118810Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T22:29:41.3120641Z       "requiredStages": [
2026-06-21T22:29:41.3120859Z         "impl",
2026-06-21T22:29:41.3121179Z         "unit"
2026-06-21T22:29:41.3121379Z       ],
2026-06-21T22:29:41.3121590Z       "stages": {
2026-06-21T22:29:41.3121793Z         "doc": {
2026-06-21T22:29:41.3122011Z           "complete": false,
2026-06-21T22:29:41.3122234Z           "evidence": []
2026-06-21T22:29:41.3122443Z         },
2026-06-21T22:29:41.3122668Z         "impl": {
2026-06-21T22:29:41.3122883Z           "complete": true,
2026-06-21T22:29:41.3123121Z           "evidence": [
2026-06-21T22:29:41.3123331Z             {
2026-06-21T22:29:41.3123584Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3123866Z               "line": 31
2026-06-21T22:29:41.3124080Z             }
2026-06-21T22:29:41.3124274Z           ]
2026-06-21T22:29:41.3124467Z         },
2026-06-21T22:29:41.3124660Z         "int": {
2026-06-21T22:29:41.3124873Z           "complete": false,
2026-06-21T22:29:41.3125106Z           "evidence": []
2026-06-21T22:29:41.3125320Z         },
2026-06-21T22:29:41.3125507Z         "unit": {
2026-06-21T22:29:41.3125722Z           "complete": true,
2026-06-21T22:29:41.3125945Z           "evidence": [
2026-06-21T22:29:41.3126159Z             {
2026-06-21T22:29:41.3126399Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3126685Z               "line": 181
2026-06-21T22:29:41.3126908Z             }
2026-06-21T22:29:41.3127109Z           ]
2026-06-21T22:29:41.3127313Z         }
2026-06-21T22:29:41.3127496Z       }
2026-06-21T22:29:41.3127692Z     },
2026-06-21T22:29:41.3127878Z     {
2026-06-21T22:29:41.3128112Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T22:29:41.3128459Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T22:29:41.3128783Z       "requiredStages": [
2026-06-21T22:29:41.3129061Z         "impl",
2026-06-21T22:29:41.3129267Z         "unit"
2026-06-21T22:29:41.3129480Z       ],
2026-06-21T22:29:41.3129680Z       "stages": {
2026-06-21T22:29:41.3129872Z         "doc": {
2026-06-21T22:29:41.3130085Z           "complete": false,
2026-06-21T22:29:41.3130323Z           "evidence": []
2026-06-21T22:29:41.3130538Z         },
2026-06-21T22:29:41.3130728Z         "impl": {
2026-06-21T22:29:41.3130943Z           "complete": true,
2026-06-21T22:29:41.3131168Z           "evidence": [
2026-06-21T22:29:41.3131381Z             {
2026-06-21T22:29:41.3131625Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3131901Z               "line": 49
2026-06-21T22:29:41.3132112Z             },
2026-06-21T22:29:41.3132310Z             {
2026-06-21T22:29:41.3132533Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3132819Z               "line": 81
2026-06-21T22:29:41.3133033Z             }
2026-06-21T22:29:41.3133233Z           ]
2026-06-21T22:29:41.3133424Z         },
2026-06-21T22:29:41.3133614Z         "int": {
2026-06-21T22:29:41.3133820Z           "complete": false,
2026-06-21T22:29:41.3134054Z           "evidence": []
2026-06-21T22:29:41.3134272Z         },
2026-06-21T22:29:41.3134473Z         "unit": {
2026-06-21T22:29:41.3134684Z           "complete": true,
2026-06-21T22:29:41.3134911Z           "evidence": [
2026-06-21T22:29:41.3135135Z             {
2026-06-21T22:29:41.3135373Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3135652Z               "line": 156
2026-06-21T22:29:41.3135986Z             },
2026-06-21T22:29:41.3136185Z             {
2026-06-21T22:29:41.3136425Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3136696Z               "line": 173
2026-06-21T22:29:41.3136902Z             },
2026-06-21T22:29:41.3137106Z             {
2026-06-21T22:29:41.3137336Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3137603Z               "line": 196
2026-06-21T22:29:41.3137815Z             }
2026-06-21T22:29:41.3138005Z           ]
2026-06-21T22:29:41.3138190Z         }
2026-06-21T22:29:41.3138291Z       }
2026-06-21T22:29:41.3138390Z     },
2026-06-21T22:29:41.3138495Z     {
2026-06-21T22:29:41.3138767Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T22:29:41.3139043Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T22:29:41.3139163Z       "requiredStages": [
2026-06-21T22:29:41.3139263Z         "impl",
2026-06-21T22:29:41.3139377Z         "unit"
2026-06-21T22:29:41.3139483Z       ],
2026-06-21T22:29:41.3139592Z       "stages": {
2026-06-21T22:29:41.3139692Z         "doc": {
2026-06-21T22:29:41.3139807Z           "complete": false,
2026-06-21T22:29:41.3139911Z           "evidence": []
2026-06-21T22:29:41.3140011Z         },
2026-06-21T22:29:41.3140122Z         "impl": {
2026-06-21T22:29:41.3140231Z           "complete": true,
2026-06-21T22:29:41.3140331Z           "evidence": [
2026-06-21T22:29:41.3140432Z             {
2026-06-21T22:29:41.3140578Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3140678Z               "line": 120
2026-06-21T22:29:41.3140778Z             }
2026-06-21T22:29:41.3140884Z           ]
2026-06-21T22:29:41.3140983Z         },
2026-06-21T22:29:41.3141083Z         "int": {
2026-06-21T22:29:41.3141194Z           "complete": false,
2026-06-21T22:29:41.3141312Z           "evidence": []
2026-06-21T22:29:41.3141413Z         },
2026-06-21T22:29:41.3141513Z         "unit": {
2026-06-21T22:29:41.3141617Z           "complete": true,
2026-06-21T22:29:41.3141723Z           "evidence": [
2026-06-21T22:29:41.3141827Z             {
2026-06-21T22:29:41.3141956Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3142062Z               "line": 212
2026-06-21T22:29:41.3142166Z             },
2026-06-21T22:29:41.3142266Z             {
2026-06-21T22:29:41.3142405Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3142509Z               "line": 221
2026-06-21T22:29:41.3142614Z             },
2026-06-21T22:29:41.3142706Z             {
2026-06-21T22:29:41.3142852Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3142956Z               "line": 229
2026-06-21T22:29:41.3143070Z             },
2026-06-21T22:29:41.3143173Z             {
2026-06-21T22:29:41.3143307Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3143417Z               "line": 239
2026-06-21T22:29:41.3143516Z             },
2026-06-21T22:29:41.3143621Z             {
2026-06-21T22:29:41.3143769Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T22:29:41.3143874Z               "line": 249
2026-06-21T22:29:41.3143980Z             }
2026-06-21T22:29:41.3144080Z           ]
2026-06-21T22:29:41.3144189Z         }
2026-06-21T22:29:41.3144290Z       }
2026-06-21T22:29:41.3144385Z     },
2026-06-21T22:29:41.3144489Z     {
2026-06-21T22:29:41.3144624Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T22:29:41.3144804Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T22:29:41.3144920Z       "requiredStages": [
2026-06-21T22:29:41.3145028Z         "impl",
2026-06-21T22:29:41.3145133Z         "unit"
2026-06-21T22:29:41.3145239Z       ],
2026-06-21T22:29:41.3145343Z       "stages": {
2026-06-21T22:29:41.3145443Z         "doc": {
2026-06-21T22:29:41.3145559Z           "complete": false,
2026-06-21T22:29:41.3145667Z           "evidence": []
2026-06-21T22:29:41.3145775Z         },
2026-06-21T22:29:41.3145871Z         "impl": {
2026-06-21T22:29:41.3146097Z           "complete": true,
2026-06-21T22:29:41.3146213Z           "evidence": [
2026-06-21T22:29:41.3146308Z             {
2026-06-21T22:29:41.3146450Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.3146556Z               "line": 14
2026-06-21T22:29:41.3146665Z             },
2026-06-21T22:29:41.3146764Z             {
2026-06-21T22:29:41.3146899Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.3147013Z               "line": 63
2026-06-21T22:29:41.3147114Z             }
2026-06-21T22:29:41.3147219Z           ]
2026-06-21T22:29:41.3147314Z         },
2026-06-21T22:29:41.3147414Z         "int": {
2026-06-21T22:29:41.3147623Z           "complete": false,
2026-06-21T22:29:41.3147728Z           "evidence": []
2026-06-21T22:29:41.3147839Z         },
2026-06-21T22:29:41.3147943Z         "unit": {
2026-06-21T22:29:41.3148063Z           "complete": true,
2026-06-21T22:29:41.3148173Z           "evidence": [
2026-06-21T22:29:41.3148276Z             {
2026-06-21T22:29:41.3148414Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.3148532Z               "line": 164
2026-06-21T22:29:41.3148640Z             },
2026-06-21T22:29:41.3148736Z             {
2026-06-21T22:29:41.3148871Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.3149060Z               "line": 198
2026-06-21T22:29:41.3149156Z             },
2026-06-21T22:29:41.3149260Z             {
2026-06-21T22:29:41.3149390Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.3149499Z               "line": 220
2026-06-21T22:29:41.3149594Z             }
2026-06-21T22:29:41.3149695Z           ]
2026-06-21T22:29:41.3149800Z         }
2026-06-21T22:29:41.3149904Z       }
2026-06-21T22:29:41.3150004Z     },
2026-06-21T22:29:41.3150105Z     {
2026-06-21T22:29:41.3150233Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T22:29:41.3151605Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T22:29:41.3151734Z       "requiredStages": [],
2026-06-21T22:29:41.3151838Z       "stages": {
2026-06-21T22:29:41.3151940Z         "doc": {
2026-06-21T22:29:41.3152054Z           "complete": true,
2026-06-21T22:29:41.3152158Z           "evidence": [
2026-06-21T22:29:41.3152259Z             {
2026-06-21T22:29:41.3152392Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3152511Z               "line": 165
2026-06-21T22:29:41.3152617Z             }
2026-06-21T22:29:41.3152716Z           ]
2026-06-21T22:29:41.3152816Z         },
2026-06-21T22:29:41.3152918Z         "impl": {
2026-06-21T22:29:41.3153035Z           "complete": false,
2026-06-21T22:29:41.3153155Z           "evidence": []
2026-06-21T22:29:41.3153261Z         },
2026-06-21T22:29:41.3153355Z         "int": {
2026-06-21T22:29:41.3153459Z           "complete": false,
2026-06-21T22:29:41.3153569Z           "evidence": []
2026-06-21T22:29:41.3153672Z         },
2026-06-21T22:29:41.3153772Z         "unit": {
2026-06-21T22:29:41.3153881Z           "complete": false,
2026-06-21T22:29:41.3153996Z           "evidence": []
2026-06-21T22:29:41.3154100Z         }
2026-06-21T22:29:41.3154191Z       }
2026-06-21T22:29:41.3154296Z     },
2026-06-21T22:29:41.3154396Z     {
2026-06-21T22:29:41.3154540Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T22:29:41.3154772Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T22:29:41.3154897Z       "requiredStages": [
2026-06-21T22:29:41.3155006Z         "impl",
2026-06-21T22:29:41.3155111Z         "unit"
2026-06-21T22:29:41.3155217Z       ],
2026-06-21T22:29:41.3155326Z       "stages": {
2026-06-21T22:29:41.3155546Z         "doc": {
2026-06-21T22:29:41.3155655Z           "complete": false,
2026-06-21T22:29:41.3155761Z           "evidence": []
2026-06-21T22:29:41.3155861Z         },
2026-06-21T22:29:41.3155965Z         "impl": {
2026-06-21T22:29:41.3156076Z           "complete": true,
2026-06-21T22:29:41.3156185Z           "evidence": [
2026-06-21T22:29:41.3156293Z             {
2026-06-21T22:29:41.3156431Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3156539Z               "line": 76
2026-06-21T22:29:41.3156629Z             },
2026-06-21T22:29:41.3156734Z             {
2026-06-21T22:29:41.3156878Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3157083Z               "line": 167
2026-06-21T22:29:41.3157188Z             },
2026-06-21T22:29:41.3157287Z             {
2026-06-21T22:29:41.3157431Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3157536Z               "line": 233
2026-06-21T22:29:41.3157639Z             },
2026-06-21T22:29:41.3157741Z             {
2026-06-21T22:29:41.3157874Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3161180Z               "line": 272
2026-06-21T22:29:41.3161314Z             }
2026-06-21T22:29:41.3161423Z           ]
2026-06-21T22:29:41.3161529Z         },
2026-06-21T22:29:41.3161633Z         "int": {
2026-06-21T22:29:41.3161755Z           "complete": false,
2026-06-21T22:29:41.3161855Z           "evidence": []
2026-06-21T22:29:41.3161951Z         },
2026-06-21T22:29:41.3162060Z         "unit": {
2026-06-21T22:29:41.3162185Z           "complete": true,
2026-06-21T22:29:41.3162294Z           "evidence": [
2026-06-21T22:29:41.3162394Z             {
2026-06-21T22:29:41.3162548Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3162658Z               "line": 321
2026-06-21T22:29:41.3162761Z             },
2026-06-21T22:29:41.3162862Z             {
2026-06-21T22:29:41.3163014Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3163129Z               "line": 329
2026-06-21T22:29:41.3163234Z             },
2026-06-21T22:29:41.3163339Z             {
2026-06-21T22:29:41.3163482Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3163600Z               "line": 356
2026-06-21T22:29:41.3163700Z             },
2026-06-21T22:29:41.3163802Z             {
2026-06-21T22:29:41.3163943Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3164052Z               "line": 395
2026-06-21T22:29:41.3164153Z             },
2026-06-21T22:29:41.3164256Z             {
2026-06-21T22:29:41.3164388Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3164494Z               "line": 406
2026-06-21T22:29:41.3164603Z             },
2026-06-21T22:29:41.3164703Z             {
2026-06-21T22:29:41.3164833Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3164946Z               "line": 418
2026-06-21T22:29:41.3165037Z             },
2026-06-21T22:29:41.3165143Z             {
2026-06-21T22:29:41.3165285Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T22:29:41.3165391Z               "line": 442
2026-06-21T22:29:41.3165495Z             }
2026-06-21T22:29:41.3165595Z           ]
2026-06-21T22:29:41.3165701Z         }
2026-06-21T22:29:41.3165800Z       }
2026-06-21T22:29:41.3165905Z     },
2026-06-21T22:29:41.3166006Z     {
2026-06-21T22:29:41.3166129Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T22:29:41.3166306Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T22:29:41.3166421Z       "requiredStages": [
2026-06-21T22:29:41.3166530Z         "impl",
2026-06-21T22:29:41.3166631Z         "int"
2026-06-21T22:29:41.3166741Z       ],
2026-06-21T22:29:41.3166844Z       "stages": {
2026-06-21T22:29:41.3166953Z         "doc": {
2026-06-21T22:29:41.3167063Z           "complete": false,
2026-06-21T22:29:41.3167165Z           "evidence": []
2026-06-21T22:29:41.3167275Z         },
2026-06-21T22:29:41.3167381Z         "impl": {
2026-06-21T22:29:41.3167643Z           "complete": true,
2026-06-21T22:29:41.3167748Z           "evidence": [
2026-06-21T22:29:41.3167852Z             {
2026-06-21T22:29:41.3168001Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3168105Z               "line": 22
2026-06-21T22:29:41.3168214Z             }
2026-06-21T22:29:41.3168316Z           ]
2026-06-21T22:29:41.3168424Z         },
2026-06-21T22:29:41.3168529Z         "int": {
2026-06-21T22:29:41.3168644Z           "complete": true,
2026-06-21T22:29:41.3168758Z           "evidence": [
2026-06-21T22:29:41.3168863Z             {
2026-06-21T22:29:41.3169091Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T22:29:41.3169302Z               "line": 18
2026-06-21T22:29:41.3169425Z             }
2026-06-21T22:29:41.3169520Z           ]
2026-06-21T22:29:41.3169624Z         },
2026-06-21T22:29:41.3169728Z         "unit": {
2026-06-21T22:29:41.3169837Z           "complete": false,
2026-06-21T22:29:41.3169948Z           "evidence": []
2026-06-21T22:29:41.3170037Z         }
2026-06-21T22:29:41.3170147Z       }
2026-06-21T22:29:41.3170243Z     },
2026-06-21T22:29:41.3170348Z     {
2026-06-21T22:29:41.3170495Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T22:29:41.3170714Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T22:29:41.3170835Z       "requiredStages": [
2026-06-21T22:29:41.3170934Z         "impl",
2026-06-21T22:29:41.3171038Z         "unit"
2026-06-21T22:29:41.3171139Z       ],
2026-06-21T22:29:41.3171239Z       "stages": {
2026-06-21T22:29:41.3171349Z         "doc": {
2026-06-21T22:29:41.3171454Z           "complete": false,
2026-06-21T22:29:41.3171568Z           "evidence": []
2026-06-21T22:29:41.3171673Z         },
2026-06-21T22:29:41.3171774Z         "impl": {
2026-06-21T22:29:41.3171883Z           "complete": true,
2026-06-21T22:29:41.3171988Z           "evidence": [
2026-06-21T22:29:41.3172098Z             {
2026-06-21T22:29:41.3172240Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3172353Z               "line": 465
2026-06-21T22:29:41.3172454Z             },
2026-06-21T22:29:41.3172564Z             {
2026-06-21T22:29:41.3172697Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3172808Z               "line": 27
2026-06-21T22:29:41.3172907Z             }
2026-06-21T22:29:41.3173002Z           ]
2026-06-21T22:29:41.3173108Z         },
2026-06-21T22:29:41.3173203Z         "int": {
2026-06-21T22:29:41.3173321Z           "complete": false,
2026-06-21T22:29:41.3173422Z           "evidence": []
2026-06-21T22:29:41.3173522Z         },
2026-06-21T22:29:41.3173626Z         "unit": {
2026-06-21T22:29:41.3173747Z           "complete": true,
2026-06-21T22:29:41.3173855Z           "evidence": [
2026-06-21T22:29:41.3173960Z             {
2026-06-21T22:29:41.3174109Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3174213Z               "line": 990
2026-06-21T22:29:41.3174323Z             },
2026-06-21T22:29:41.3174433Z             {
2026-06-21T22:29:41.3174570Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3174684Z               "line": 181
2026-06-21T22:29:41.3174779Z             }
2026-06-21T22:29:41.3174887Z           ]
2026-06-21T22:29:41.3174988Z         }
2026-06-21T22:29:41.3175088Z       }
2026-06-21T22:29:41.3175196Z     },
2026-06-21T22:29:41.3175297Z     {
2026-06-21T22:29:41.3175436Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T22:29:41.3175622Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T22:29:41.3175741Z       "requiredStages": [
2026-06-21T22:29:41.3175845Z         "impl",
2026-06-21T22:29:41.3175965Z         "unit"
2026-06-21T22:29:41.3176070Z       ],
2026-06-21T22:29:41.3176174Z       "stages": {
2026-06-21T22:29:41.3176285Z         "doc": {
2026-06-21T22:29:41.3176389Z           "complete": false,
2026-06-21T22:29:41.3176498Z           "evidence": []
2026-06-21T22:29:41.3176600Z         },
2026-06-21T22:29:41.3176832Z         "impl": {
2026-06-21T22:29:41.3176944Z           "complete": true,
2026-06-21T22:29:41.3177051Z           "evidence": [
2026-06-21T22:29:41.3177167Z             {
2026-06-21T22:29:41.3177306Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.3177413Z               "line": 73
2026-06-21T22:29:41.3177513Z             },
2026-06-21T22:29:41.3177618Z             {
2026-06-21T22:29:41.3177768Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.3177873Z               "line": 972
2026-06-21T22:29:41.3177979Z             },
2026-06-21T22:29:41.3178083Z             {
2026-06-21T22:29:41.3178232Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3178407Z               "line": 20
2026-06-21T22:29:41.3178513Z             },
2026-06-21T22:29:41.3178622Z             {
2026-06-21T22:29:41.3178755Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3178866Z               "line": 100
2026-06-21T22:29:41.3179022Z             },
2026-06-21T22:29:41.3179123Z             {
2026-06-21T22:29:41.3179251Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.3179366Z               "line": 619
2026-06-21T22:29:41.3179467Z             },
2026-06-21T22:29:41.3179566Z             {
2026-06-21T22:29:41.3179714Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T22:29:41.3179816Z               "line": 68
2026-06-21T22:29:41.3179923Z             },
2026-06-21T22:29:41.3180027Z             {
2026-06-21T22:29:41.3180171Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T22:29:41.3180283Z               "line": 80
2026-06-21T22:29:41.3180392Z             }
2026-06-21T22:29:41.3180498Z           ]
2026-06-21T22:29:41.3180597Z         },
2026-06-21T22:29:41.3180697Z         "int": {
2026-06-21T22:29:41.3180817Z           "complete": true,
2026-06-21T22:29:41.3180926Z           "evidence": [
2026-06-21T22:29:41.3181026Z             {
2026-06-21T22:29:41.3181160Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T22:29:41.3181269Z               "line": 44
2026-06-21T22:29:41.3181361Z             }
2026-06-21T22:29:41.3181465Z           ]
2026-06-21T22:29:41.3181566Z         },
2026-06-21T22:29:41.3181665Z         "unit": {
2026-06-21T22:29:41.3181776Z           "complete": true,
2026-06-21T22:29:41.3181871Z           "evidence": [
2026-06-21T22:29:41.3181970Z             {
2026-06-21T22:29:41.3182109Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.3182209Z               "line": 1181
2026-06-21T22:29:41.3182315Z             },
2026-06-21T22:29:41.3182415Z             {
2026-06-21T22:29:41.3182562Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.3182673Z               "line": 1197
2026-06-21T22:29:41.3182777Z             },
2026-06-21T22:29:41.3182875Z             {
2026-06-21T22:29:41.3183010Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3183124Z               "line": 2672
2026-06-21T22:29:41.3183223Z             },
2026-06-21T22:29:41.3183334Z             {
2026-06-21T22:29:41.3183477Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3183581Z               "line": 152
2026-06-21T22:29:41.3183682Z             },
2026-06-21T22:29:41.3183787Z             {
2026-06-21T22:29:41.3183920Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3184030Z               "line": 175
2026-06-21T22:29:41.3184139Z             },
2026-06-21T22:29:41.3184240Z             {
2026-06-21T22:29:41.3184373Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3184478Z               "line": 186
2026-06-21T22:29:41.3184584Z             },
2026-06-21T22:29:41.3184688Z             {
2026-06-21T22:29:41.3184821Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3184932Z               "line": 202
2026-06-21T22:29:41.3185031Z             },
2026-06-21T22:29:41.3185135Z             {
2026-06-21T22:29:41.3185381Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T22:29:41.3185490Z               "line": 216
2026-06-21T22:29:41.3185600Z             },
2026-06-21T22:29:41.3185700Z             {
2026-06-21T22:29:41.3185847Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T22:29:41.3185944Z               "line": 137
2026-06-21T22:29:41.3186053Z             },
2026-06-21T22:29:41.3186152Z             {
2026-06-21T22:29:41.3186287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3186396Z               "line": 8152
2026-06-21T22:29:41.3186492Z             },
2026-06-21T22:29:41.3186602Z             {
2026-06-21T22:29:41.3186840Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T22:29:41.3186954Z               "line": 30
2026-06-21T22:29:41.3187054Z             },
2026-06-21T22:29:41.3187160Z             {
2026-06-21T22:29:41.3187297Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T22:29:41.3187402Z               "line": 73
2026-06-21T22:29:41.3187508Z             }
2026-06-21T22:29:41.3187607Z           ]
2026-06-21T22:29:41.3187707Z         }
2026-06-21T22:29:41.3187799Z       }
2026-06-21T22:29:41.3187899Z     },
2026-06-21T22:29:41.3188002Z     {
2026-06-21T22:29:41.3188145Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T22:29:41.3192294Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T22:29:41.3192488Z       "requiredStages": [
2026-06-21T22:29:41.3192594Z         "impl",
2026-06-21T22:29:41.3192697Z         "unit",
2026-06-21T22:29:41.3192798Z         "int"
2026-06-21T22:29:41.3192904Z       ],
2026-06-21T22:29:41.3193008Z       "stages": {
2026-06-21T22:29:41.3193113Z         "doc": {
2026-06-21T22:29:41.3193248Z           "complete": false,
2026-06-21T22:29:41.3193360Z           "evidence": []
2026-06-21T22:29:41.3193450Z         },
2026-06-21T22:29:41.3193550Z         "impl": {
2026-06-21T22:29:41.3193670Z           "complete": true,
2026-06-21T22:29:41.3193774Z           "evidence": [
2026-06-21T22:29:41.3193875Z             {
2026-06-21T22:29:41.3194027Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3194131Z               "line": 510
2026-06-21T22:29:41.3194237Z             },
2026-06-21T22:29:41.3194342Z             {
2026-06-21T22:29:41.3194490Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3194590Z               "line": 704
2026-06-21T22:29:41.3194695Z             }
2026-06-21T22:29:41.3194795Z           ]
2026-06-21T22:29:41.3194895Z         },
2026-06-21T22:29:41.3195000Z         "int": {
2026-06-21T22:29:41.3195115Z           "complete": true,
2026-06-21T22:29:41.3195220Z           "evidence": [
2026-06-21T22:29:41.3195319Z             {
2026-06-21T22:29:41.3195563Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3195666Z               "line": 1119
2026-06-21T22:29:41.3195776Z             },
2026-06-21T22:29:41.3195866Z             {
2026-06-21T22:29:41.3196017Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T22:29:41.3196122Z               "line": 312
2026-06-21T22:29:41.3196223Z             }
2026-06-21T22:29:41.3196326Z           ]
2026-06-21T22:29:41.3196432Z         },
2026-06-21T22:29:41.3196537Z         "unit": {
2026-06-21T22:29:41.3196646Z           "complete": true,
2026-06-21T22:29:41.3196757Z           "evidence": [
2026-06-21T22:29:41.3196956Z             {
2026-06-21T22:29:41.3197100Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3197214Z               "line": 821
2026-06-21T22:29:41.3197313Z             }
2026-06-21T22:29:41.3197419Z           ]
2026-06-21T22:29:41.3197519Z         }
2026-06-21T22:29:41.3197623Z       }
2026-06-21T22:29:41.3197734Z     },
2026-06-21T22:29:41.3197834Z     {
2026-06-21T22:29:41.3197957Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T22:29:41.3198230Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T22:29:41.3198335Z       "requiredStages": [
2026-06-21T22:29:41.3198440Z         "impl",
2026-06-21T22:29:41.3198557Z         "unit"
2026-06-21T22:29:41.3198657Z       ],
2026-06-21T22:29:41.3198766Z       "stages": {
2026-06-21T22:29:41.3198869Z         "doc": {
2026-06-21T22:29:41.3199061Z           "complete": true,
2026-06-21T22:29:41.3199165Z           "evidence": [
2026-06-21T22:29:41.3199265Z             {
2026-06-21T22:29:41.3199418Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3199522Z               "line": 133
2026-06-21T22:29:41.3199624Z             }
2026-06-21T22:29:41.3199733Z           ]
2026-06-21T22:29:41.3199832Z         },
2026-06-21T22:29:41.3199928Z         "impl": {
2026-06-21T22:29:41.3200034Z           "complete": true,
2026-06-21T22:29:41.3200147Z           "evidence": [
2026-06-21T22:29:41.3200253Z             {
2026-06-21T22:29:41.3200377Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.3200481Z               "line": 65
2026-06-21T22:29:41.3200587Z             },
2026-06-21T22:29:41.3200692Z             {
2026-06-21T22:29:41.3200825Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3200926Z               "line": 17
2026-06-21T22:29:41.3201034Z             },
2026-06-21T22:29:41.3201139Z             {
2026-06-21T22:29:41.3201291Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.3201389Z               "line": 146
2026-06-21T22:29:41.3201498Z             },
2026-06-21T22:29:41.3201604Z             {
2026-06-21T22:29:41.3201737Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3201846Z               "line": 310
2026-06-21T22:29:41.3201947Z             },
2026-06-21T22:29:41.3202051Z             {
2026-06-21T22:29:41.3202185Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3202304Z               "line": 441
2026-06-21T22:29:41.3202409Z             },
2026-06-21T22:29:41.3202500Z             {
2026-06-21T22:29:41.3202633Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.3202748Z               "line": 32
2026-06-21T22:29:41.3202844Z             },
2026-06-21T22:29:41.3202943Z             {
2026-06-21T22:29:41.3203077Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3203188Z               "line": 1283
2026-06-21T22:29:41.3203281Z             },
2026-06-21T22:29:41.3203392Z             {
2026-06-21T22:29:41.3203522Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3203634Z               "line": 6161
2026-06-21T22:29:41.3203735Z             },
2026-06-21T22:29:41.3203836Z             {
2026-06-21T22:29:41.3203953Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3204062Z               "line": 6443
2026-06-21T22:29:41.3204272Z             }
2026-06-21T22:29:41.3204372Z           ]
2026-06-21T22:29:41.3204473Z         },
2026-06-21T22:29:41.3204578Z         "int": {
2026-06-21T22:29:41.3204706Z           "complete": false,
2026-06-21T22:29:41.3204807Z           "evidence": []
2026-06-21T22:29:41.3204912Z         },
2026-06-21T22:29:41.3205016Z         "unit": {
2026-06-21T22:29:41.3205127Z           "complete": true,
2026-06-21T22:29:41.3205236Z           "evidence": [
2026-06-21T22:29:41.3205326Z             {
2026-06-21T22:29:41.3205460Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3205565Z               "line": 94
2026-06-21T22:29:41.3205670Z             },
2026-06-21T22:29:41.3205874Z             {
2026-06-21T22:29:41.3206009Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3206113Z               "line": 111
2026-06-21T22:29:41.3206217Z             },
2026-06-21T22:29:41.3206322Z             {
2026-06-21T22:29:41.3206454Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3206562Z               "line": 124
2026-06-21T22:29:41.3206668Z             },
2026-06-21T22:29:41.3206769Z             {
2026-06-21T22:29:41.3206896Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3207002Z               "line": 134
2026-06-21T22:29:41.3207116Z             },
2026-06-21T22:29:41.3207220Z             {
2026-06-21T22:29:41.3207345Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3207455Z               "line": 144
2026-06-21T22:29:41.3207554Z             },
2026-06-21T22:29:41.3207656Z             {
2026-06-21T22:29:41.3207774Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T22:29:41.3207883Z               "line": 156
2026-06-21T22:29:41.3207989Z             },
2026-06-21T22:29:41.3208093Z             {
2026-06-21T22:29:41.3208251Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3208356Z               "line": 746
2026-06-21T22:29:41.3208461Z             },
2026-06-21T22:29:41.3208566Z             {
2026-06-21T22:29:41.3208713Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.3208818Z               "line": 309
2026-06-21T22:29:41.3208915Z             }
2026-06-21T22:29:41.3209108Z           ]
2026-06-21T22:29:41.3209203Z         }
2026-06-21T22:29:41.3209312Z       }
2026-06-21T22:29:41.3209411Z     },
2026-06-21T22:29:41.3209515Z     {
2026-06-21T22:29:41.3209649Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T22:29:41.3209811Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T22:29:41.3209931Z       "requiredStages": [
2026-06-21T22:29:41.3210036Z         "impl",
2026-06-21T22:29:41.3210159Z         "unit"
2026-06-21T22:29:41.3210260Z       ],
2026-06-21T22:29:41.3210374Z       "stages": {
2026-06-21T22:29:41.3210474Z         "doc": {
2026-06-21T22:29:41.3210580Z           "complete": false,
2026-06-21T22:29:41.3210694Z           "evidence": []
2026-06-21T22:29:41.3210794Z         },
2026-06-21T22:29:41.3210899Z         "impl": {
2026-06-21T22:29:41.3211003Z           "complete": true,
2026-06-21T22:29:41.3211118Z           "evidence": [
2026-06-21T22:29:41.3211219Z             {
2026-06-21T22:29:41.3211361Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.3211477Z               "line": 128
2026-06-21T22:29:41.3211581Z             }
2026-06-21T22:29:41.3211684Z           ]
2026-06-21T22:29:41.3211789Z         },
2026-06-21T22:29:41.3211884Z         "int": {
2026-06-21T22:29:41.3212001Z           "complete": false,
2026-06-21T22:29:41.3212102Z           "evidence": []
2026-06-21T22:29:41.3212207Z         },
2026-06-21T22:29:41.3212311Z         "unit": {
2026-06-21T22:29:41.3212426Z           "complete": true,
2026-06-21T22:29:41.3212535Z           "evidence": [
2026-06-21T22:29:41.3212644Z             {
2026-06-21T22:29:41.3212784Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.3212894Z               "line": 205
2026-06-21T22:29:41.3212988Z             }
2026-06-21T22:29:41.3213212Z           ]
2026-06-21T22:29:41.3213317Z         }
2026-06-21T22:29:41.3213414Z       }
2026-06-21T22:29:41.3213517Z     },
2026-06-21T22:29:41.3213622Z     {
2026-06-21T22:29:41.3213757Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T22:29:41.3213937Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T22:29:41.3214043Z       "requiredStages": [
2026-06-21T22:29:41.3214152Z         "impl",
2026-06-21T22:29:41.3214257Z         "unit"
2026-06-21T22:29:41.3214358Z       ],
2026-06-21T22:29:41.3214467Z       "stages": {
2026-06-21T22:29:41.3214566Z         "doc": {
2026-06-21T22:29:41.3214675Z           "complete": false,
2026-06-21T22:29:41.3214880Z           "evidence": []
2026-06-21T22:29:41.3214985Z         },
2026-06-21T22:29:41.3215090Z         "impl": {
2026-06-21T22:29:41.3215204Z           "complete": true,
2026-06-21T22:29:41.3215305Z           "evidence": [
2026-06-21T22:29:41.3215405Z             {
2026-06-21T22:29:41.3215548Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3215663Z               "line": 367
2026-06-21T22:29:41.3215772Z             },
2026-06-21T22:29:41.3215872Z             {
2026-06-21T22:29:41.3216002Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3216115Z               "line": 378
2026-06-21T22:29:41.3216220Z             },
2026-06-21T22:29:41.3216326Z             {
2026-06-21T22:29:41.3216454Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3216554Z               "line": 396
2026-06-21T22:29:41.3216641Z             }
2026-06-21T22:29:41.3216739Z           ]
2026-06-21T22:29:41.3216844Z         },
2026-06-21T22:29:41.3216944Z         "int": {
2026-06-21T22:29:41.3217056Z           "complete": false,
2026-06-21T22:29:41.3217160Z           "evidence": []
2026-06-21T22:29:41.3217262Z         },
2026-06-21T22:29:41.3217367Z         "unit": {
2026-06-21T22:29:41.3217470Z           "complete": true,
2026-06-21T22:29:41.3217576Z           "evidence": [
2026-06-21T22:29:41.3217686Z             {
2026-06-21T22:29:41.3217823Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3217929Z               "line": 420
2026-06-21T22:29:41.3218033Z             },
2026-06-21T22:29:41.3218133Z             {
2026-06-21T22:29:41.3218267Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3218372Z               "line": 441
2026-06-21T22:29:41.3218477Z             },
2026-06-21T22:29:41.3218582Z             {
2026-06-21T22:29:41.3218715Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3218821Z               "line": 811
2026-06-21T22:29:41.3218925Z             },
2026-06-21T22:29:41.3219107Z             {
2026-06-21T22:29:41.3219250Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3219355Z               "line": 822
2026-06-21T22:29:41.3219455Z             },
2026-06-21T22:29:41.3219551Z             {
2026-06-21T22:29:41.3219692Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3219816Z               "line": 835
2026-06-21T22:29:41.3219914Z             }
2026-06-21T22:29:41.3220018Z           ]
2026-06-21T22:29:41.3220124Z         }
2026-06-21T22:29:41.3220234Z       }
2026-06-21T22:29:41.3220333Z     },
2026-06-21T22:29:41.3220429Z     {
2026-06-21T22:29:41.3220577Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T22:29:41.3228040Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T22:29:41.3228475Z       "requiredStages": [
2026-06-21T22:29:41.3228589Z         "impl",
2026-06-21T22:29:41.3228698Z         "unit",
2026-06-21T22:29:41.3228804Z         "int"
2026-06-21T22:29:41.3228908Z       ],
2026-06-21T22:29:41.3229147Z       "stages": {
2026-06-21T22:29:41.3229251Z         "doc": {
2026-06-21T22:29:41.3229367Z           "complete": false,
2026-06-21T22:29:41.3229504Z           "evidence": []
2026-06-21T22:29:41.3229604Z         },
2026-06-21T22:29:41.3229706Z         "impl": {
2026-06-21T22:29:41.3229824Z           "complete": true,
2026-06-21T22:29:41.3229924Z           "evidence": [
2026-06-21T22:29:41.3230030Z             {
2026-06-21T22:29:41.3230181Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3230290Z               "line": 364
2026-06-21T22:29:41.3230386Z             },
2026-06-21T22:29:41.3230488Z             {
2026-06-21T22:29:41.3230645Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3230761Z               "line": 835
2026-06-21T22:29:41.3230855Z             },
2026-06-21T22:29:41.3230955Z             {
2026-06-21T22:29:41.3231099Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3231203Z               "line": 1104
2026-06-21T22:29:41.3231309Z             }
2026-06-21T22:29:41.3231409Z           ]
2026-06-21T22:29:41.3231503Z         },
2026-06-21T22:29:41.3231609Z         "int": {
2026-06-21T22:29:41.3231719Z           "complete": true,
2026-06-21T22:29:41.3231823Z           "evidence": [
2026-06-21T22:29:41.3231919Z             {
2026-06-21T22:29:41.3232090Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3232204Z               "line": 256
2026-06-21T22:29:41.3232306Z             },
2026-06-21T22:29:41.3232414Z             {
2026-06-21T22:29:41.3232573Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3232682Z               "line": 382
2026-06-21T22:29:41.3232790Z             }
2026-06-21T22:29:41.3232895Z           ]
2026-06-21T22:29:41.3232995Z         },
2026-06-21T22:29:41.3233098Z         "unit": {
2026-06-21T22:29:41.3233212Z           "complete": true,
2026-06-21T22:29:41.3233318Z           "evidence": [
2026-06-21T22:29:41.3233517Z             {
2026-06-21T22:29:41.3233661Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3233769Z               "line": 2799
2026-06-21T22:29:41.3233881Z             }
2026-06-21T22:29:41.3233980Z           ]
2026-06-21T22:29:41.3234089Z         }
2026-06-21T22:29:41.3234186Z       }
2026-06-21T22:29:41.3234295Z     },
2026-06-21T22:29:41.3234395Z     {
2026-06-21T22:29:41.3234553Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T22:29:41.3241796Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T22:29:41.3242169Z       "requiredStages": [
2026-06-21T22:29:41.3242274Z         "doc",
2026-06-21T22:29:41.3242398Z         "impl",
2026-06-21T22:29:41.3242508Z         "unit",
2026-06-21T22:29:41.3242608Z         "int"
2026-06-21T22:29:41.3242712Z       ],
2026-06-21T22:29:41.3242818Z       "stages": {
2026-06-21T22:29:41.3242927Z         "doc": {
2026-06-21T22:29:41.3243037Z           "complete": true,
2026-06-21T22:29:41.3243147Z           "evidence": [
2026-06-21T22:29:41.3243252Z             {
2026-06-21T22:29:41.3243383Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3243494Z               "line": 454
2026-06-21T22:29:41.3243587Z             }
2026-06-21T22:29:41.3243691Z           ]
2026-06-21T22:29:41.3243782Z         },
2026-06-21T22:29:41.3243907Z         "impl": {
2026-06-21T22:29:41.3244020Z           "complete": true,
2026-06-21T22:29:41.3244126Z           "evidence": [
2026-06-21T22:29:41.3244230Z             {
2026-06-21T22:29:41.3244378Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3244483Z               "line": 229
2026-06-21T22:29:41.3244692Z             },
2026-06-21T22:29:41.3244788Z             {
2026-06-21T22:29:41.3244927Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3245031Z               "line": 493
2026-06-21T22:29:41.3245127Z             },
2026-06-21T22:29:41.3245227Z             {
2026-06-21T22:29:41.3245370Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3245475Z               "line": 1907
2026-06-21T22:29:41.3245575Z             },
2026-06-21T22:29:41.3245680Z             {
2026-06-21T22:29:41.3245809Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.3245918Z               "line": 347
2026-06-21T22:29:41.3246119Z             }
2026-06-21T22:29:41.3246222Z           ]
2026-06-21T22:29:41.3246327Z         },
2026-06-21T22:29:41.3246433Z         "int": {
2026-06-21T22:29:41.3246551Z           "complete": true,
2026-06-21T22:29:41.3246661Z           "evidence": [
2026-06-21T22:29:41.3246766Z             {
2026-06-21T22:29:41.3246913Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.3247038Z               "line": 737
2026-06-21T22:29:41.3247143Z             },
2026-06-21T22:29:41.3247242Z             {
2026-06-21T22:29:41.3247386Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.3247486Z               "line": 854
2026-06-21T22:29:41.3247591Z             },
2026-06-21T22:29:41.3247701Z             {
2026-06-21T22:29:41.3247872Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3247978Z               "line": 544
2026-06-21T22:29:41.3248082Z             },
2026-06-21T22:29:41.3248181Z             {
2026-06-21T22:29:41.3248359Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3248472Z               "line": 1800
2026-06-21T22:29:41.3248572Z             },
2026-06-21T22:29:41.3248672Z             {
2026-06-21T22:29:41.3248836Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T22:29:41.3249043Z               "line": 266
2026-06-21T22:29:41.3249151Z             }
2026-06-21T22:29:41.3249251Z           ]
2026-06-21T22:29:41.3249357Z         },
2026-06-21T22:29:41.3249461Z         "unit": {
2026-06-21T22:29:41.3249577Z           "complete": true,
2026-06-21T22:29:41.3249681Z           "evidence": [
2026-06-21T22:29:41.3249780Z             {
2026-06-21T22:29:41.3249910Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.3250015Z               "line": 1046
2026-06-21T22:29:41.3250124Z             },
2026-06-21T22:29:41.3250220Z             {
2026-06-21T22:29:41.3250358Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.3250472Z               "line": 1080
2026-06-21T22:29:41.3250578Z             }
2026-06-21T22:29:41.3250682Z           ]
2026-06-21T22:29:41.3250782Z         }
2026-06-21T22:29:41.3250888Z       }
2026-06-21T22:29:41.3250986Z     },
2026-06-21T22:29:41.3251088Z     {
2026-06-21T22:29:41.3251222Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T22:29:41.3251823Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T22:29:41.3251938Z       "requiredStages": [
2026-06-21T22:29:41.3252046Z         "impl",
2026-06-21T22:29:41.3252148Z         "unit"
2026-06-21T22:29:41.3252253Z       ],
2026-06-21T22:29:41.3252357Z       "stages": {
2026-06-21T22:29:41.3252468Z         "doc": {
2026-06-21T22:29:41.3252568Z           "complete": false,
2026-06-21T22:29:41.3252676Z           "evidence": []
2026-06-21T22:29:41.3252782Z         },
2026-06-21T22:29:41.3252886Z         "impl": {
2026-06-21T22:29:41.3252996Z           "complete": true,
2026-06-21T22:29:41.3253107Z           "evidence": [
2026-06-21T22:29:41.3253215Z             {
2026-06-21T22:29:41.3253364Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3253478Z               "line": 759
2026-06-21T22:29:41.3253679Z             }
2026-06-21T22:29:41.3253779Z           ]
2026-06-21T22:29:41.3253887Z         },
2026-06-21T22:29:41.3253991Z         "int": {
2026-06-21T22:29:41.3254110Z           "complete": false,
2026-06-21T22:29:41.3254213Z           "evidence": []
2026-06-21T22:29:41.3254318Z         },
2026-06-21T22:29:41.3254419Z         "unit": {
2026-06-21T22:29:41.3254523Z           "complete": true,
2026-06-21T22:29:41.3254633Z           "evidence": [
2026-06-21T22:29:41.3254724Z             {
2026-06-21T22:29:41.3254876Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3254976Z               "line": 873
2026-06-21T22:29:41.3255186Z             }
2026-06-21T22:29:41.3255291Z           ]
2026-06-21T22:29:41.3258070Z         }
2026-06-21T22:29:41.3258200Z       }
2026-06-21T22:29:41.3258304Z     },
2026-06-21T22:29:41.3258404Z     {
2026-06-21T22:29:41.3258576Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T22:29:41.3261081Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T22:29:41.3261232Z       "requiredStages": [
2026-06-21T22:29:41.3261338Z         "impl",
2026-06-21T22:29:41.3261448Z         "unit",
2026-06-21T22:29:41.3261556Z         "int"
2026-06-21T22:29:41.3261667Z       ],
2026-06-21T22:29:41.3261773Z       "stages": {
2026-06-21T22:29:41.3261875Z         "doc": {
2026-06-21T22:29:41.3261989Z           "complete": false,
2026-06-21T22:29:41.3262090Z           "evidence": []
2026-06-21T22:29:41.3262188Z         },
2026-06-21T22:29:41.3262297Z         "impl": {
2026-06-21T22:29:41.3262408Z           "complete": true,
2026-06-21T22:29:41.3262512Z           "evidence": [
2026-06-21T22:29:41.3262607Z             {
2026-06-21T22:29:41.3262755Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3262859Z               "line": 705
2026-06-21T22:29:41.3262960Z             }
2026-06-21T22:29:41.3263075Z           ]
2026-06-21T22:29:41.3263174Z         },
2026-06-21T22:29:41.3263284Z         "int": {
2026-06-21T22:29:41.3263394Z           "complete": true,
2026-06-21T22:29:41.3263503Z           "evidence": [
2026-06-21T22:29:41.3263604Z             {
2026-06-21T22:29:41.3263766Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T22:29:41.3263881Z               "line": 24
2026-06-21T22:29:41.3263982Z             }
2026-06-21T22:29:41.3264085Z           ]
2026-06-21T22:29:41.3264190Z         },
2026-06-21T22:29:41.3264297Z         "unit": {
2026-06-21T22:29:41.3264404Z           "complete": true,
2026-06-21T22:29:41.3264518Z           "evidence": [
2026-06-21T22:29:41.3264623Z             {
2026-06-21T22:29:41.3264769Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3264878Z               "line": 918
2026-06-21T22:29:41.3264979Z             }
2026-06-21T22:29:41.3265083Z           ]
2026-06-21T22:29:41.3265183Z         }
2026-06-21T22:29:41.3265294Z       }
2026-06-21T22:29:41.3265393Z     },
2026-06-21T22:29:41.3265493Z     {
2026-06-21T22:29:41.3265632Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T22:29:41.3269278Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T22:29:41.3269749Z       "requiredStages": [
2026-06-21T22:29:41.3269843Z         "impl",
2026-06-21T22:29:41.3269942Z         "unit",
2026-06-21T22:29:41.3270048Z         "int"
2026-06-21T22:29:41.3270154Z       ],
2026-06-21T22:29:41.3270257Z       "stages": {
2026-06-21T22:29:41.3270358Z         "doc": {
2026-06-21T22:29:41.3270477Z           "complete": false,
2026-06-21T22:29:41.3270586Z           "evidence": []
2026-06-21T22:29:41.3270697Z         },
2026-06-21T22:29:41.3270796Z         "impl": {
2026-06-21T22:29:41.3270910Z           "complete": true,
2026-06-21T22:29:41.3271016Z           "evidence": [
2026-06-21T22:29:41.3271135Z             {
2026-06-21T22:29:41.3271278Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3271383Z               "line": 391
2026-06-21T22:29:41.3271492Z             },
2026-06-21T22:29:41.3271593Z             {
2026-06-21T22:29:41.3271740Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3271850Z               "line": 343
2026-06-21T22:29:41.3271961Z             },
2026-06-21T22:29:41.3272060Z             {
2026-06-21T22:29:41.3272183Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3272294Z               "line": 1750
2026-06-21T22:29:41.3272389Z             },
2026-06-21T22:29:41.3272488Z             {
2026-06-21T22:29:41.3272616Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3272720Z               "line": 3191
2026-06-21T22:29:41.3272809Z             }
2026-06-21T22:29:41.3272910Z           ]
2026-06-21T22:29:41.3273006Z         },
2026-06-21T22:29:41.3273105Z         "int": {
2026-06-21T22:29:41.3273230Z           "complete": true,
2026-06-21T22:29:41.3273329Z           "evidence": [
2026-06-21T22:29:41.3273434Z             {
2026-06-21T22:29:41.3273597Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T22:29:41.3273707Z               "line": 353
2026-06-21T22:29:41.3273816Z             },
2026-06-21T22:29:41.3273926Z             {
2026-06-21T22:29:41.3274092Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T22:29:41.3274193Z               "line": 23
2026-06-21T22:29:41.3274302Z             }
2026-06-21T22:29:41.3274407Z           ]
2026-06-21T22:29:41.3274508Z         },
2026-06-21T22:29:41.3274617Z         "unit": {
2026-06-21T22:29:41.3274731Z           "complete": true,
2026-06-21T22:29:41.3274842Z           "evidence": [
2026-06-21T22:29:41.3274941Z             {
2026-06-21T22:29:41.3275087Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3275193Z               "line": 743
2026-06-21T22:29:41.3275300Z             },
2026-06-21T22:29:41.3275405Z             {
2026-06-21T22:29:41.3275525Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3275634Z               "line": 7863
2026-06-21T22:29:41.3275733Z             }
2026-06-21T22:29:41.3275840Z           ]
2026-06-21T22:29:41.3275935Z         }
2026-06-21T22:29:41.3276116Z       }
2026-06-21T22:29:41.3276221Z     },
2026-06-21T22:29:41.3276320Z     {
2026-06-21T22:29:41.3276460Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T22:29:41.3279838Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T22:29:41.3280110Z       "requiredStages": [
2026-06-21T22:29:41.3280219Z         "impl",
2026-06-21T22:29:41.3280323Z         "unit",
2026-06-21T22:29:41.3280427Z         "int"
2026-06-21T22:29:41.3280526Z       ],
2026-06-21T22:29:41.3280631Z       "stages": {
2026-06-21T22:29:41.3280736Z         "doc": {
2026-06-21T22:29:41.3280845Z           "complete": false,
2026-06-21T22:29:41.3280976Z           "evidence": []
2026-06-21T22:29:41.3281080Z         },
2026-06-21T22:29:41.3281179Z         "impl": {
2026-06-21T22:29:41.3281290Z           "complete": true,
2026-06-21T22:29:41.3281399Z           "evidence": [
2026-06-21T22:29:41.3281509Z             {
2026-06-21T22:29:41.3281667Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3281771Z               "line": 64
2026-06-21T22:29:41.3281877Z             },
2026-06-21T22:29:41.3281976Z             {
2026-06-21T22:29:41.3282123Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3282230Z               "line": 78
2026-06-21T22:29:41.3282334Z             },
2026-06-21T22:29:41.3282433Z             {
2026-06-21T22:29:41.3282568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3282676Z               "line": 170
2026-06-21T22:29:41.3282768Z             },
2026-06-21T22:29:41.3282874Z             {
2026-06-21T22:29:41.3283015Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3283124Z               "line": 185
2026-06-21T22:29:41.3283233Z             },
2026-06-21T22:29:41.3283336Z             {
2026-06-21T22:29:41.3283475Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3283580Z               "line": 195
2026-06-21T22:29:41.3283693Z             },
2026-06-21T22:29:41.3283785Z             {
2026-06-21T22:29:41.3283933Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3284037Z               "line": 205
2026-06-21T22:29:41.3284133Z             },
2026-06-21T22:29:41.3284238Z             {
2026-06-21T22:29:41.3284371Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3284482Z               "line": 294
2026-06-21T22:29:41.3284581Z             },
2026-06-21T22:29:41.3284691Z             {
2026-06-21T22:29:41.3284835Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3284944Z               "line": 308
2026-06-21T22:29:41.3285044Z             },
2026-06-21T22:29:41.3285150Z             {
2026-06-21T22:29:41.3285296Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3285402Z               "line": 377
2026-06-21T22:29:41.3285511Z             },
2026-06-21T22:29:41.3285620Z             {
2026-06-21T22:29:41.3285870Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3285993Z               "line": 437
2026-06-21T22:29:41.3286095Z             },
2026-06-21T22:29:41.3286199Z             {
2026-06-21T22:29:41.3286342Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3286456Z               "line": 455
2026-06-21T22:29:41.3286570Z             }
2026-06-21T22:29:41.3286667Z           ]
2026-06-21T22:29:41.3286766Z         },
2026-06-21T22:29:41.3286875Z         "int": {
2026-06-21T22:29:41.3286982Z           "complete": true,
2026-06-21T22:29:41.3287091Z           "evidence": [
2026-06-21T22:29:41.3287199Z             {
2026-06-21T22:29:41.3287468Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T22:29:41.3287568Z               "line": 45
2026-06-21T22:29:41.3287669Z             },
2026-06-21T22:29:41.3287767Z             {
2026-06-21T22:29:41.3287916Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T22:29:41.3288026Z               "line": 354
2026-06-21T22:29:41.3288135Z             },
2026-06-21T22:29:41.3288236Z             {
2026-06-21T22:29:41.3288397Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T22:29:41.3288496Z               "line": 31
2026-06-21T22:29:41.3288601Z             }
2026-06-21T22:29:41.3288707Z           ]
2026-06-21T22:29:41.3288806Z         },
2026-06-21T22:29:41.3288911Z         "unit": {
2026-06-21T22:29:41.3289116Z           "complete": true,
2026-06-21T22:29:41.3289216Z           "evidence": [
2026-06-21T22:29:41.3289321Z             {
2026-06-21T22:29:41.3289473Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3289599Z               "line": 727
2026-06-21T22:29:41.3289693Z             }
2026-06-21T22:29:41.3289788Z           ]
2026-06-21T22:29:41.3289894Z         }
2026-06-21T22:29:41.3289993Z       }
2026-06-21T22:29:41.3290098Z     },
2026-06-21T22:29:41.3290195Z     {
2026-06-21T22:29:41.3290331Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T22:29:41.3290576Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T22:29:41.3290684Z       "requiredStages": [
2026-06-21T22:29:41.3290798Z         "impl",
2026-06-21T22:29:41.3290898Z         "unit"
2026-06-21T22:29:41.3291001Z       ],
2026-06-21T22:29:41.3291105Z       "stages": {
2026-06-21T22:29:41.3291206Z         "doc": {
2026-06-21T22:29:41.3291306Z           "complete": false,
2026-06-21T22:29:41.3291415Z           "evidence": []
2026-06-21T22:29:41.3291521Z         },
2026-06-21T22:29:41.3291630Z         "impl": {
2026-06-21T22:29:41.3291744Z           "complete": true,
2026-06-21T22:29:41.3291855Z           "evidence": [
2026-06-21T22:29:41.3291959Z             {
2026-06-21T22:29:41.3292093Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3292203Z               "line": 14
2026-06-21T22:29:41.3292312Z             },
2026-06-21T22:29:41.3292412Z             {
2026-06-21T22:29:41.3292546Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.3292656Z               "line": 566
2026-06-21T22:29:41.3292757Z             }
2026-06-21T22:29:41.3292865Z           ]
2026-06-21T22:29:41.3292965Z         },
2026-06-21T22:29:41.3293072Z         "int": {
2026-06-21T22:29:41.3293180Z           "complete": false,
2026-06-21T22:29:41.3293285Z           "evidence": []
2026-06-21T22:29:41.3293386Z         },
2026-06-21T22:29:41.3293490Z         "unit": {
2026-06-21T22:29:41.3293603Z           "complete": true,
2026-06-21T22:29:41.3293713Z           "evidence": [
2026-06-21T22:29:41.3293817Z             {
2026-06-21T22:29:41.3293939Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3294045Z               "line": 130
2026-06-21T22:29:41.3294140Z             },
2026-06-21T22:29:41.3294235Z             {
2026-06-21T22:29:41.3294360Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3294464Z               "line": 138
2026-06-21T22:29:41.3294694Z             },
2026-06-21T22:29:41.3294793Z             {
2026-06-21T22:29:41.3294916Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3295027Z               "line": 146
2026-06-21T22:29:41.3295131Z             },
2026-06-21T22:29:41.3295236Z             {
2026-06-21T22:29:41.3295357Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3295460Z               "line": 154
2026-06-21T22:29:41.3295565Z             },
2026-06-21T22:29:41.3295671Z             {
2026-06-21T22:29:41.3295798Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3295914Z               "line": 162
2026-06-21T22:29:41.3296019Z             },
2026-06-21T22:29:41.3296227Z             {
2026-06-21T22:29:41.3296356Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T22:29:41.3296454Z               "line": 170
2026-06-21T22:29:41.3296558Z             }
2026-06-21T22:29:41.3296660Z           ]
2026-06-21T22:29:41.3296769Z         }
2026-06-21T22:29:41.3296864Z       }
2026-06-21T22:29:41.3296965Z     },
2026-06-21T22:29:41.3297056Z     {
2026-06-21T22:29:41.3297179Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T22:29:41.3298108Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T22:29:41.3298224Z       "requiredStages": [
2026-06-21T22:29:41.3298323Z         "impl",
2026-06-21T22:29:41.3298433Z         "unit"
2026-06-21T22:29:41.3298524Z       ],
2026-06-21T22:29:41.3298661Z       "stages": {
2026-06-21T22:29:41.3298772Z         "doc": {
2026-06-21T22:29:41.3298887Z           "complete": false,
2026-06-21T22:29:41.3299075Z           "evidence": []
2026-06-21T22:29:41.3299171Z         },
2026-06-21T22:29:41.3299281Z         "impl": {
2026-06-21T22:29:41.3299390Z           "complete": true,
2026-06-21T22:29:41.3299515Z           "evidence": [
2026-06-21T22:29:41.3299610Z             {
2026-06-21T22:29:41.3299777Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3299886Z               "line": 34
2026-06-21T22:29:41.3299985Z             }
2026-06-21T22:29:41.3300086Z           ]
2026-06-21T22:29:41.3300187Z         },
2026-06-21T22:29:41.3300291Z         "int": {
2026-06-21T22:29:41.3300406Z           "complete": false,
2026-06-21T22:29:41.3300520Z           "evidence": []
2026-06-21T22:29:41.3300620Z         },
2026-06-21T22:29:41.3300726Z         "unit": {
2026-06-21T22:29:41.3300840Z           "complete": true,
2026-06-21T22:29:41.3300940Z           "evidence": [
2026-06-21T22:29:41.3301050Z             {
2026-06-21T22:29:41.3301211Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3301315Z               "line": 188
2026-06-21T22:29:41.3301425Z             },
2026-06-21T22:29:41.3301519Z             {
2026-06-21T22:29:41.3301685Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3301800Z               "line": 200
2026-06-21T22:29:41.3301904Z             },
2026-06-21T22:29:41.3302005Z             {
2026-06-21T22:29:41.3302167Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3302276Z               "line": 211
2026-06-21T22:29:41.3302378Z             },
2026-06-21T22:29:41.3302482Z             {
2026-06-21T22:29:41.3302629Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3302734Z               "line": 253
2026-06-21T22:29:41.3302829Z             },
2026-06-21T22:29:41.3302929Z             {
2026-06-21T22:29:41.3303096Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3303201Z               "line": 277
2026-06-21T22:29:41.3303312Z             },
2026-06-21T22:29:41.3303411Z             {
2026-06-21T22:29:41.3303573Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3303783Z               "line": 300
2026-06-21T22:29:41.3303888Z             },
2026-06-21T22:29:41.3303999Z             {
2026-06-21T22:29:41.3304159Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T22:29:41.3304268Z               "line": 316
2026-06-21T22:29:41.3304367Z             }
2026-06-21T22:29:41.3304476Z           ]
2026-06-21T22:29:41.3304571Z         }
2026-06-21T22:29:41.3304672Z       }
2026-06-21T22:29:41.3304786Z     },
2026-06-21T22:29:41.3304886Z     {
2026-06-21T22:29:41.3305015Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T22:29:41.3305574Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T22:29:41.3305791Z       "requiredStages": [
2026-06-21T22:29:41.3305902Z         "impl",
2026-06-21T22:29:41.3306011Z         "unit"
2026-06-21T22:29:41.3306130Z       ],
2026-06-21T22:29:41.3306236Z       "stages": {
2026-06-21T22:29:41.3306345Z         "doc": {
2026-06-21T22:29:41.3306455Z           "complete": false,
2026-06-21T22:29:41.3306565Z           "evidence": []
2026-06-21T22:29:41.3306674Z         },
2026-06-21T22:29:41.3306778Z         "impl": {
2026-06-21T22:29:41.3306892Z           "complete": true,
2026-06-21T22:29:41.3306990Z           "evidence": [
2026-06-21T22:29:41.3307095Z             {
2026-06-21T22:29:41.3307239Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3307352Z               "line": 29
2026-06-21T22:29:41.3307452Z             },
2026-06-21T22:29:41.3307549Z             {
2026-06-21T22:29:41.3307714Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3307830Z               "line": 174
2026-06-21T22:29:41.3307930Z             },
2026-06-21T22:29:41.3308029Z             {
2026-06-21T22:29:41.3308173Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3308278Z               "line": 194
2026-06-21T22:29:41.3308383Z             },
2026-06-21T22:29:41.3308488Z             {
2026-06-21T22:29:41.3308626Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3308741Z               "line": 222
2026-06-21T22:29:41.3308836Z             }
2026-06-21T22:29:41.3309022Z           ]
2026-06-21T22:29:41.3309128Z         },
2026-06-21T22:29:41.3309230Z         "int": {
2026-06-21T22:29:41.3309356Z           "complete": false,
2026-06-21T22:29:41.3309461Z           "evidence": []
2026-06-21T22:29:41.3309564Z         },
2026-06-21T22:29:41.3309659Z         "unit": {
2026-06-21T22:29:41.3309775Z           "complete": true,
2026-06-21T22:29:41.3309893Z           "evidence": [
2026-06-21T22:29:41.3309997Z             {
2026-06-21T22:29:41.3310141Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3310240Z               "line": 329
2026-06-21T22:29:41.3310347Z             },
2026-06-21T22:29:41.3310451Z             {
2026-06-21T22:29:41.3310584Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3310704Z               "line": 344
2026-06-21T22:29:41.3310808Z             },
2026-06-21T22:29:41.3310903Z             {
2026-06-21T22:29:41.3311043Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3311152Z               "line": 417
2026-06-21T22:29:41.3311257Z             },
2026-06-21T22:29:41.3311363Z             {
2026-06-21T22:29:41.3311505Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3311615Z               "line": 433
2026-06-21T22:29:41.3311711Z             },
2026-06-21T22:29:41.3311814Z             {
2026-06-21T22:29:41.3311947Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3312060Z               "line": 492
2026-06-21T22:29:41.3312174Z             },
2026-06-21T22:29:41.3312283Z             {
2026-06-21T22:29:41.3312417Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3312531Z               "line": 506
2026-06-21T22:29:41.3312732Z             },
2026-06-21T22:29:41.3312836Z             {
2026-06-21T22:29:41.3312966Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3313079Z               "line": 517
2026-06-21T22:29:41.3313184Z             },
2026-06-21T22:29:41.3313281Z             {
2026-06-21T22:29:41.3313413Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3313518Z               "line": 528
2026-06-21T22:29:41.3313619Z             }
2026-06-21T22:29:41.3313719Z           ]
2026-06-21T22:29:41.3313828Z         }
2026-06-21T22:29:41.3313925Z       }
2026-06-21T22:29:41.3314023Z     },
2026-06-21T22:29:41.3314129Z     {
2026-06-21T22:29:41.3314372Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T22:29:41.3315055Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T22:29:41.3315184Z       "requiredStages": [
2026-06-21T22:29:41.3315289Z         "impl",
2026-06-21T22:29:41.3315398Z         "unit"
2026-06-21T22:29:41.3315500Z       ],
2026-06-21T22:29:41.3315613Z       "stages": {
2026-06-21T22:29:41.3315717Z         "doc": {
2026-06-21T22:29:41.3315824Z           "complete": false,
2026-06-21T22:29:41.3315933Z           "evidence": []
2026-06-21T22:29:41.3316037Z         },
2026-06-21T22:29:41.3316143Z         "impl": {
2026-06-21T22:29:41.3316257Z           "complete": true,
2026-06-21T22:29:41.3316371Z           "evidence": [
2026-06-21T22:29:41.3316458Z             {
2026-06-21T22:29:41.3316619Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3316739Z               "line": 27
2026-06-21T22:29:41.3316844Z             },
2026-06-21T22:29:41.3316938Z             {
2026-06-21T22:29:41.3317088Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3317196Z               "line": 110
2026-06-21T22:29:41.3317300Z             },
2026-06-21T22:29:41.3317410Z             {
2026-06-21T22:29:41.3317555Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3317664Z               "line": 153
2026-06-21T22:29:41.3317770Z             },
2026-06-21T22:29:41.3317865Z             {
2026-06-21T22:29:41.3318017Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3318128Z               "line": 182
2026-06-21T22:29:41.3318222Z             },
2026-06-21T22:29:41.3318327Z             {
2026-06-21T22:29:41.3318490Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3318594Z               "line": 31
2026-06-21T22:29:41.3318700Z             },
2026-06-21T22:29:41.3318804Z             {
2026-06-21T22:29:41.3319053Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3319167Z               "line": 113
2026-06-21T22:29:41.3319267Z             },
2026-06-21T22:29:41.3319358Z             {
2026-06-21T22:29:41.3319529Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3319631Z               "line": 138
2026-06-21T22:29:41.3319734Z             }
2026-06-21T22:29:41.3319839Z           ]
2026-06-21T22:29:41.3319940Z         },
2026-06-21T22:29:41.3320045Z         "int": {
2026-06-21T22:29:41.3320157Z           "complete": false,
2026-06-21T22:29:41.3320267Z           "evidence": []
2026-06-21T22:29:41.3320373Z         },
2026-06-21T22:29:41.3320481Z         "unit": {
2026-06-21T22:29:41.3320597Z           "complete": true,
2026-06-21T22:29:41.3320701Z           "evidence": [
2026-06-21T22:29:41.3320801Z             {
2026-06-21T22:29:41.3320959Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3321069Z               "line": 261
2026-06-21T22:29:41.3321163Z             },
2026-06-21T22:29:41.3321255Z             {
2026-06-21T22:29:41.3321412Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3321516Z               "line": 276
2026-06-21T22:29:41.3321745Z             },
2026-06-21T22:29:41.3321846Z             {
2026-06-21T22:29:41.3321998Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3322102Z               "line": 293
2026-06-21T22:29:41.3322204Z             },
2026-06-21T22:29:41.3322313Z             {
2026-06-21T22:29:41.3322459Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3322574Z               "line": 310
2026-06-21T22:29:41.3322676Z             },
2026-06-21T22:29:41.3322781Z             {
2026-06-21T22:29:41.3322930Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3323139Z               "line": 327
2026-06-21T22:29:41.3323235Z             },
2026-06-21T22:29:41.3323330Z             {
2026-06-21T22:29:41.3323478Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.3323587Z               "line": 366
2026-06-21T22:29:41.3323696Z             },
2026-06-21T22:29:41.3323812Z             {
2026-06-21T22:29:41.3323978Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3324088Z               "line": 179
2026-06-21T22:29:41.3324193Z             },
2026-06-21T22:29:41.3324298Z             {
2026-06-21T22:29:41.3324451Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3324560Z               "line": 194
2026-06-21T22:29:41.3324660Z             },
2026-06-21T22:29:41.3324766Z             {
2026-06-21T22:29:41.3324922Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3325028Z               "line": 204
2026-06-21T22:29:41.3325143Z             },
2026-06-21T22:29:41.3325241Z             {
2026-06-21T22:29:41.3325408Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3325516Z               "line": 259
2026-06-21T22:29:41.3325620Z             },
2026-06-21T22:29:41.3325730Z             {
2026-06-21T22:29:41.3325892Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3326016Z               "line": 269
2026-06-21T22:29:41.3326121Z             },
2026-06-21T22:29:41.3326225Z             {
2026-06-21T22:29:41.3326389Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.3326498Z               "line": 283
2026-06-21T22:29:41.3326607Z             }
2026-06-21T22:29:41.3326708Z           ]
2026-06-21T22:29:41.3326812Z         }
2026-06-21T22:29:41.3326907Z       }
2026-06-21T22:29:41.3327009Z     },
2026-06-21T22:29:41.3327112Z     {
2026-06-21T22:29:41.3327246Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T22:29:41.3327465Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T22:29:41.3327570Z       "requiredStages": [],
2026-06-21T22:29:41.3327686Z       "stages": {
2026-06-21T22:29:41.3327784Z         "doc": {
2026-06-21T22:29:41.3327907Z           "complete": false,
2026-06-21T22:29:41.3328012Z           "evidence": []
2026-06-21T22:29:41.3328120Z         },
2026-06-21T22:29:41.3328229Z         "impl": {
2026-06-21T22:29:41.3328340Z           "complete": false,
2026-06-21T22:29:41.3328449Z           "evidence": []
2026-06-21T22:29:41.3328544Z         },
2026-06-21T22:29:41.3328650Z         "int": {
2026-06-21T22:29:41.3328754Z           "complete": false,
2026-06-21T22:29:41.3328863Z           "evidence": []
2026-06-21T22:29:41.3329055Z         },
2026-06-21T22:29:41.3329159Z         "unit": {
2026-06-21T22:29:41.3329274Z           "complete": false,
2026-06-21T22:29:41.3329379Z           "evidence": []
2026-06-21T22:29:41.3329488Z         }
2026-06-21T22:29:41.3329594Z       }
2026-06-21T22:29:41.3329689Z     },
2026-06-21T22:29:41.3329793Z     {
2026-06-21T22:29:41.3329937Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T22:29:41.3330794Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T22:29:41.3331028Z       "requiredStages": [
2026-06-21T22:29:41.3331132Z         "impl",
2026-06-21T22:29:41.3331243Z         "unit"
2026-06-21T22:29:41.3331342Z       ],
2026-06-21T22:29:41.3331447Z       "stages": {
2026-06-21T22:29:41.3331543Z         "doc": {
2026-06-21T22:29:41.3331662Z           "complete": false,
2026-06-21T22:29:41.3331776Z           "evidence": []
2026-06-21T22:29:41.3331877Z         },
2026-06-21T22:29:41.3331986Z         "impl": {
2026-06-21T22:29:41.3332096Z           "complete": true,
2026-06-21T22:29:41.3332206Z           "evidence": [
2026-06-21T22:29:41.3332421Z             {
2026-06-21T22:29:41.3332577Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3332682Z               "line": 26
2026-06-21T22:29:41.3332788Z             },
2026-06-21T22:29:41.3332887Z             {
2026-06-21T22:29:41.3333024Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3333153Z               "line": 95
2026-06-21T22:29:41.3333255Z             },
2026-06-21T22:29:41.3333360Z             {
2026-06-21T22:29:41.3333510Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3333618Z               "line": 166
2026-06-21T22:29:41.3333728Z             },
2026-06-21T22:29:41.3333828Z             {
2026-06-21T22:29:41.3333975Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3334077Z               "line": 19
2026-06-21T22:29:41.3334186Z             },
2026-06-21T22:29:41.3334290Z             {
2026-06-21T22:29:41.3334434Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3334543Z               "line": 50
2026-06-21T22:29:41.3334643Z             },
2026-06-21T22:29:41.3334744Z             {
2026-06-21T22:29:41.3334872Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T22:29:41.3334988Z               "line": 18
2026-06-21T22:29:41.3335092Z             },
2026-06-21T22:29:41.3335201Z             {
2026-06-21T22:29:41.3335336Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T22:29:41.3335444Z               "line": 71
2026-06-21T22:29:41.3335554Z             },
2026-06-21T22:29:41.3335660Z             {
2026-06-21T22:29:41.3335801Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.3335900Z               "line": 87
2026-06-21T22:29:41.3336001Z             }
2026-06-21T22:29:41.3336104Z           ]
2026-06-21T22:29:41.3336208Z         },
2026-06-21T22:29:41.3336314Z         "int": {
2026-06-21T22:29:41.3336428Z           "complete": false,
2026-06-21T22:29:41.3336537Z           "evidence": []
2026-06-21T22:29:41.3336644Z         },
2026-06-21T22:29:41.3336743Z         "unit": {
2026-06-21T22:29:41.3336857Z           "complete": true,
2026-06-21T22:29:41.3336963Z           "evidence": [
2026-06-21T22:29:41.3337067Z             {
2026-06-21T22:29:41.3337215Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3337329Z               "line": 289
2026-06-21T22:29:41.3337434Z             },
2026-06-21T22:29:41.3337540Z             {
2026-06-21T22:29:41.3337682Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3337787Z               "line": 314
2026-06-21T22:29:41.3337893Z             },
2026-06-21T22:29:41.3337992Z             {
2026-06-21T22:29:41.3338140Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3338246Z               "line": 350
2026-06-21T22:29:41.3338349Z             },
2026-06-21T22:29:41.3338448Z             {
2026-06-21T22:29:41.3338591Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3338699Z               "line": 418
2026-06-21T22:29:41.3338804Z             },
2026-06-21T22:29:41.3338905Z             {
2026-06-21T22:29:41.3339124Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3339234Z               "line": 429
2026-06-21T22:29:41.3339328Z             },
2026-06-21T22:29:41.3339525Z             {
2026-06-21T22:29:41.3339667Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3339777Z               "line": 460
2026-06-21T22:29:41.3339877Z             },
2026-06-21T22:29:41.3339986Z             {
2026-06-21T22:29:41.3340126Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.3340239Z               "line": 471
2026-06-21T22:29:41.3340344Z             },
2026-06-21T22:29:41.3340446Z             {
2026-06-21T22:29:41.3340587Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3340683Z               "line": 77
2026-06-21T22:29:41.3340775Z             },
2026-06-21T22:29:41.3340969Z             {
2026-06-21T22:29:41.3341113Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3341221Z               "line": 97
2026-06-21T22:29:41.3341334Z             },
2026-06-21T22:29:41.3341435Z             {
2026-06-21T22:29:41.3341574Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3341683Z               "line": 112
2026-06-21T22:29:41.3341784Z             },
2026-06-21T22:29:41.3341888Z             {
2026-06-21T22:29:41.3342027Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3342132Z               "line": 123
2026-06-21T22:29:41.3342226Z             },
2026-06-21T22:29:41.3342331Z             {
2026-06-21T22:29:41.3342475Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3342579Z               "line": 130
2026-06-21T22:29:41.3342690Z             },
2026-06-21T22:29:41.3342789Z             {
2026-06-21T22:29:41.3342932Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T22:29:41.3343052Z               "line": 145
2026-06-21T22:29:41.3343151Z             },
2026-06-21T22:29:41.3343257Z             {
2026-06-21T22:29:41.3343386Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T22:29:41.3343494Z               "line": 115
2026-06-21T22:29:41.3343594Z             },
2026-06-21T22:29:41.3343699Z             {
2026-06-21T22:29:41.3343830Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T22:29:41.3343940Z               "line": 130
2026-06-21T22:29:41.3344050Z             },
2026-06-21T22:29:41.3344149Z             {
2026-06-21T22:29:41.3344288Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.3344398Z               "line": 428
2026-06-21T22:29:41.3344502Z             }
2026-06-21T22:29:41.3344608Z           ]
2026-06-21T22:29:41.3344712Z         }
2026-06-21T22:29:41.3344816Z       }
2026-06-21T22:29:41.3344914Z     },
2026-06-21T22:29:41.3345013Z     {
2026-06-21T22:29:41.3345145Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T22:29:41.3351354Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T22:29:41.3354911Z       "requiredStages": [
2026-06-21T22:29:41.3355048Z         "impl",
2026-06-21T22:29:41.3355159Z         "unit",
2026-06-21T22:29:41.3355263Z         "int"
2026-06-21T22:29:41.3355396Z       ],
2026-06-21T22:29:41.3355502Z       "stages": {
2026-06-21T22:29:41.3355611Z         "doc": {
2026-06-21T22:29:41.3355735Z           "complete": false,
2026-06-21T22:29:41.3355836Z           "evidence": []
2026-06-21T22:29:41.3355945Z         },
2026-06-21T22:29:41.3356049Z         "impl": {
2026-06-21T22:29:41.3356170Z           "complete": true,
2026-06-21T22:29:41.3356278Z           "evidence": [
2026-06-21T22:29:41.3356374Z             {
2026-06-21T22:29:41.3356522Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3356632Z               "line": 1021
2026-06-21T22:29:41.3356732Z             },
2026-06-21T22:29:41.3356837Z             {
2026-06-21T22:29:41.3356992Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3357093Z               "line": 322
2026-06-21T22:29:41.3357201Z             }
2026-06-21T22:29:41.3357309Z           ]
2026-06-21T22:29:41.3357410Z         },
2026-06-21T22:29:41.3357511Z         "int": {
2026-06-21T22:29:41.3357619Z           "complete": true,
2026-06-21T22:29:41.3357720Z           "evidence": [
2026-06-21T22:29:41.3357820Z             {
2026-06-21T22:29:41.3358006Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.3358107Z               "line": 1983
2026-06-21T22:29:41.3358211Z             }
2026-06-21T22:29:41.3358316Z           ]
2026-06-21T22:29:41.3358417Z         },
2026-06-21T22:29:41.3358526Z         "unit": {
2026-06-21T22:29:41.3358635Z           "complete": true,
2026-06-21T22:29:41.3358751Z           "evidence": [
2026-06-21T22:29:41.3358855Z             {
2026-06-21T22:29:41.3359089Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3359198Z               "line": 2843
2026-06-21T22:29:41.3359295Z             },
2026-06-21T22:29:41.3359400Z             {
2026-06-21T22:29:41.3359545Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3359655Z               "line": 2907
2026-06-21T22:29:41.3359768Z             },
2026-06-21T22:29:41.3359867Z             {
2026-06-21T22:29:41.3360011Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3360115Z               "line": 2962
2026-06-21T22:29:41.3360219Z             }
2026-06-21T22:29:41.3360316Z           ]
2026-06-21T22:29:41.3360412Z         }
2026-06-21T22:29:41.3360520Z       }
2026-06-21T22:29:41.3360617Z     },
2026-06-21T22:29:41.3360716Z     {
2026-06-21T22:29:41.3360849Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T22:29:41.3361741Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T22:29:41.3361871Z       "requiredStages": [
2026-06-21T22:29:41.3361970Z         "doc",
2026-06-21T22:29:41.3362075Z         "impl",
2026-06-21T22:29:41.3362176Z         "unit"
2026-06-21T22:29:41.3362450Z       ],
2026-06-21T22:29:41.3362556Z       "stages": {
2026-06-21T22:29:41.3362660Z         "doc": {
2026-06-21T22:29:41.3362779Z           "complete": true,
2026-06-21T22:29:41.3362885Z           "evidence": [
2026-06-21T22:29:41.3362985Z             {
2026-06-21T22:29:41.3363123Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3363233Z               "line": 374
2026-06-21T22:29:41.3363332Z             }
2026-06-21T22:29:41.3363438Z           ]
2026-06-21T22:29:41.3363543Z         },
2026-06-21T22:29:41.3363647Z         "impl": {
2026-06-21T22:29:41.3363752Z           "complete": true,
2026-06-21T22:29:41.3363853Z           "evidence": [
2026-06-21T22:29:41.3364082Z             {
2026-06-21T22:29:41.3364224Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3364329Z               "line": 206
2026-06-21T22:29:41.3364435Z             },
2026-06-21T22:29:41.3364539Z             {
2026-06-21T22:29:41.3364681Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3364791Z               "line": 310
2026-06-21T22:29:41.3364889Z             },
2026-06-21T22:29:41.3364983Z             {
2026-06-21T22:29:41.3365122Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3365232Z               "line": 568
2026-06-21T22:29:41.3365331Z             },
2026-06-21T22:29:41.3365442Z             {
2026-06-21T22:29:41.3365580Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3365685Z               "line": 583
2026-06-21T22:29:41.3365781Z             },
2026-06-21T22:29:41.3365885Z             {
2026-06-21T22:29:41.3366024Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3366133Z               "line": 1302
2026-06-21T22:29:41.3366238Z             },
2026-06-21T22:29:41.3366338Z             {
2026-06-21T22:29:41.3366491Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3366604Z               "line": 443
2026-06-21T22:29:41.3366706Z             },
2026-06-21T22:29:41.3366815Z             {
2026-06-21T22:29:41.3366949Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3367054Z               "line": 590
2026-06-21T22:29:41.3367148Z             },
2026-06-21T22:29:41.3367254Z             {
2026-06-21T22:29:41.3367393Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3367500Z               "line": 731
2026-06-21T22:29:41.3367605Z             }
2026-06-21T22:29:41.3367705Z           ]
2026-06-21T22:29:41.3367813Z         },
2026-06-21T22:29:41.3367917Z         "int": {
2026-06-21T22:29:41.3368038Z           "complete": false,
2026-06-21T22:29:41.3368147Z           "evidence": []
2026-06-21T22:29:41.3368251Z         },
2026-06-21T22:29:41.3368367Z         "unit": {
2026-06-21T22:29:41.3368480Z           "complete": true,
2026-06-21T22:29:41.3368591Z           "evidence": [
2026-06-21T22:29:41.3368695Z             {
2026-06-21T22:29:41.3368847Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3369043Z               "line": 1155
2026-06-21T22:29:41.3369147Z             },
2026-06-21T22:29:41.3369254Z             {
2026-06-21T22:29:41.3369410Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T22:29:41.3369525Z               "line": 30
2026-06-21T22:29:41.3369626Z             }
2026-06-21T22:29:41.3369734Z           ]
2026-06-21T22:29:41.3369835Z         }
2026-06-21T22:29:41.3369936Z       }
2026-06-21T22:29:41.3370029Z     },
2026-06-21T22:29:41.3370134Z     {
2026-06-21T22:29:41.3370263Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T22:29:41.3373640Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T22:29:41.3374003Z       "requiredStages": [
2026-06-21T22:29:41.3374108Z         "impl",
2026-06-21T22:29:41.3374217Z         "unit",
2026-06-21T22:29:41.3374307Z         "int"
2026-06-21T22:29:41.3374404Z       ],
2026-06-21T22:29:41.3374508Z       "stages": {
2026-06-21T22:29:41.3374613Z         "doc": {
2026-06-21T22:29:41.3374747Z           "complete": false,
2026-06-21T22:29:41.3374851Z           "evidence": []
2026-06-21T22:29:41.3374956Z         },
2026-06-21T22:29:41.3375062Z         "impl": {
2026-06-21T22:29:41.3375179Z           "complete": true,
2026-06-21T22:29:41.3375279Z           "evidence": [
2026-06-21T22:29:41.3375379Z             {
2026-06-21T22:29:41.3375506Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3375615Z               "line": 718
2026-06-21T22:29:41.3375721Z             },
2026-06-21T22:29:41.3375821Z             {
2026-06-21T22:29:41.3375954Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3376064Z               "line": 887
2026-06-21T22:29:41.3376173Z             }
2026-06-21T22:29:41.3376274Z           ]
2026-06-21T22:29:41.3376369Z         },
2026-06-21T22:29:41.3376483Z         "int": {
2026-06-21T22:29:41.3376589Z           "complete": true,
2026-06-21T22:29:41.3376703Z           "evidence": [
2026-06-21T22:29:41.3376807Z             {
2026-06-21T22:29:41.3376956Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.3377070Z               "line": 420
2026-06-21T22:29:41.3377174Z             }
2026-06-21T22:29:41.3377280Z           ]
2026-06-21T22:29:41.3377379Z         },
2026-06-21T22:29:41.3377489Z         "unit": {
2026-06-21T22:29:41.3377605Z           "complete": true,
2026-06-21T22:29:41.3377713Z           "evidence": [
2026-06-21T22:29:41.3377819Z             {
2026-06-21T22:29:41.3377948Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3378066Z               "line": 1072
2026-06-21T22:29:41.3378151Z             },
2026-06-21T22:29:41.3378256Z             {
2026-06-21T22:29:41.3378392Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3378492Z               "line": 1096
2026-06-21T22:29:41.3378603Z             }
2026-06-21T22:29:41.3378702Z           ]
2026-06-21T22:29:41.3378807Z         }
2026-06-21T22:29:41.3378908Z       }
2026-06-21T22:29:41.3379073Z     },
2026-06-21T22:29:41.3379166Z     {
2026-06-21T22:29:41.3379303Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T22:29:41.3383058Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T22:29:41.3383292Z       "requiredStages": [
2026-06-21T22:29:41.3383401Z         "impl",
2026-06-21T22:29:41.3383494Z         "unit",
2026-06-21T22:29:41.3383696Z         "int"
2026-06-21T22:29:41.3383800Z       ],
2026-06-21T22:29:41.3383904Z       "stages": {
2026-06-21T22:29:41.3384010Z         "doc": {
2026-06-21T22:29:41.3384115Z           "complete": false,
2026-06-21T22:29:41.3384219Z           "evidence": []
2026-06-21T22:29:41.3384320Z         },
2026-06-21T22:29:41.3384416Z         "impl": {
2026-06-21T22:29:41.3384538Z           "complete": true,
2026-06-21T22:29:41.3384645Z           "evidence": [
2026-06-21T22:29:41.3384744Z             {
2026-06-21T22:29:41.3384872Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3384988Z               "line": 1417
2026-06-21T22:29:41.3385083Z             },
2026-06-21T22:29:41.3385192Z             {
2026-06-21T22:29:41.3385321Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3385430Z               "line": 1441
2026-06-21T22:29:41.3385536Z             }
2026-06-21T22:29:41.3385632Z           ]
2026-06-21T22:29:41.3385739Z         },
2026-06-21T22:29:41.3385844Z         "int": {
2026-06-21T22:29:41.3385954Z           "complete": true,
2026-06-21T22:29:41.3386061Z           "evidence": [
2026-06-21T22:29:41.3386151Z             {
2026-06-21T22:29:41.3386310Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T22:29:41.3386423Z               "line": 329
2026-06-21T22:29:41.3386529Z             }
2026-06-21T22:29:41.3386634Z           ]
2026-06-21T22:29:41.3386743Z         },
2026-06-21T22:29:41.3386839Z         "unit": {
2026-06-21T22:29:41.3386948Z           "complete": true,
2026-06-21T22:29:41.3387057Z           "evidence": [
2026-06-21T22:29:41.3387159Z             {
2026-06-21T22:29:41.3387282Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3387391Z               "line": 8169
2026-06-21T22:29:41.3387497Z             }
2026-06-21T22:29:41.3387596Z           ]
2026-06-21T22:29:41.3387697Z         }
2026-06-21T22:29:41.3387803Z       }
2026-06-21T22:29:41.3387901Z     },
2026-06-21T22:29:41.3388006Z     {
2026-06-21T22:29:41.3388132Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T22:29:41.3392067Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T22:29:41.3392363Z       "requiredStages": [
2026-06-21T22:29:41.3392472Z         "impl",
2026-06-21T22:29:41.3392578Z         "unit"
2026-06-21T22:29:41.3392678Z       ],
2026-06-21T22:29:41.3392783Z       "stages": {
2026-06-21T22:29:41.3392887Z         "doc": {
2026-06-21T22:29:41.3392997Z           "complete": false,
2026-06-21T22:29:41.3393107Z           "evidence": []
2026-06-21T22:29:41.3393212Z         },
2026-06-21T22:29:41.3393308Z         "impl": {
2026-06-21T22:29:41.3393417Z           "complete": true,
2026-06-21T22:29:41.3393527Z           "evidence": [
2026-06-21T22:29:41.3393632Z             {
2026-06-21T22:29:41.3393899Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3394017Z               "line": 910
2026-06-21T22:29:41.3394121Z             }
2026-06-21T22:29:41.3394221Z           ]
2026-06-21T22:29:41.3394318Z         },
2026-06-21T22:29:41.3394421Z         "int": {
2026-06-21T22:29:41.3394536Z           "complete": false,
2026-06-21T22:29:41.3394652Z           "evidence": []
2026-06-21T22:29:41.3394750Z         },
2026-06-21T22:29:41.3394861Z         "unit": {
2026-06-21T22:29:41.3394976Z           "complete": true,
2026-06-21T22:29:41.3395084Z           "evidence": [
2026-06-21T22:29:41.3395181Z             {
2026-06-21T22:29:41.3395314Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3395428Z               "line": 1112
2026-06-21T22:29:41.3395529Z             }
2026-06-21T22:29:41.3395628Z           ]
2026-06-21T22:29:41.3395733Z         }
2026-06-21T22:29:41.3395834Z       }
2026-06-21T22:29:41.3395933Z     },
2026-06-21T22:29:41.3396038Z     {
2026-06-21T22:29:41.3396196Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T22:29:41.3400800Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T22:29:41.3400996Z       "requiredStages": [
2026-06-21T22:29:41.3401090Z         "impl",
2026-06-21T22:29:41.3401191Z         "unit"
2026-06-21T22:29:41.3401306Z       ],
2026-06-21T22:29:41.3401410Z       "stages": {
2026-06-21T22:29:41.3401511Z         "doc": {
2026-06-21T22:29:41.3401616Z           "complete": false,
2026-06-21T22:29:41.3401729Z           "evidence": []
2026-06-21T22:29:41.3401847Z         },
2026-06-21T22:29:41.3401957Z         "impl": {
2026-06-21T22:29:41.3402070Z           "complete": true,
2026-06-21T22:29:41.3402174Z           "evidence": [
2026-06-21T22:29:41.3402280Z             {
2026-06-21T22:29:41.3402403Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3402508Z               "line": 264
2026-06-21T22:29:41.3402741Z             }
2026-06-21T22:29:41.3402848Z           ]
2026-06-21T22:29:41.3402952Z         },
2026-06-21T22:29:41.3403047Z         "int": {
2026-06-21T22:29:41.3403153Z           "complete": false,
2026-06-21T22:29:41.3403262Z           "evidence": []
2026-06-21T22:29:41.3403361Z         },
2026-06-21T22:29:41.3403467Z         "unit": {
2026-06-21T22:29:41.3403567Z           "complete": true,
2026-06-21T22:29:41.3403686Z           "evidence": [
2026-06-21T22:29:41.3403787Z             {
2026-06-21T22:29:41.3403924Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3404034Z               "line": 1094
2026-06-21T22:29:41.3404234Z             },
2026-06-21T22:29:41.3404339Z             {
2026-06-21T22:29:41.3404464Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3404572Z               "line": 1225
2026-06-21T22:29:41.3404676Z             },
2026-06-21T22:29:41.3404782Z             {
2026-06-21T22:29:41.3404906Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3405034Z               "line": 1227
2026-06-21T22:29:41.3405131Z             }
2026-06-21T22:29:41.3405235Z           ]
2026-06-21T22:29:41.3405329Z         }
2026-06-21T22:29:41.3405421Z       }
2026-06-21T22:29:41.3405526Z     },
2026-06-21T22:29:41.3405625Z     {
2026-06-21T22:29:41.3405769Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T22:29:41.3406056Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T22:29:41.3406174Z       "requiredStages": [
2026-06-21T22:29:41.3406278Z         "impl",
2026-06-21T22:29:41.3406380Z         "unit"
2026-06-21T22:29:41.3406493Z       ],
2026-06-21T22:29:41.3406593Z       "stages": {
2026-06-21T22:29:41.3406709Z         "doc": {
2026-06-21T22:29:41.3406813Z           "complete": true,
2026-06-21T22:29:41.3406926Z           "evidence": [
2026-06-21T22:29:41.3407031Z             {
2026-06-21T22:29:41.3407149Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3407257Z               "line": 139
2026-06-21T22:29:41.3407358Z             }
2026-06-21T22:29:41.3407468Z           ]
2026-06-21T22:29:41.3407567Z         },
2026-06-21T22:29:41.3407673Z         "impl": {
2026-06-21T22:29:41.3407783Z           "complete": true,
2026-06-21T22:29:41.3407892Z           "evidence": [
2026-06-21T22:29:41.3407998Z             {
2026-06-21T22:29:41.3408130Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T22:29:41.3408230Z               "line": 29
2026-06-21T22:29:41.3408336Z             },
2026-06-21T22:29:41.3408445Z             {
2026-06-21T22:29:41.3408574Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T22:29:41.3408689Z               "line": 67
2026-06-21T22:29:41.3408784Z             },
2026-06-21T22:29:41.3408884Z             {
2026-06-21T22:29:41.3409112Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.3409219Z               "line": 101
2026-06-21T22:29:41.3409332Z             },
2026-06-21T22:29:41.3409451Z             {
2026-06-21T22:29:41.3409600Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3409703Z               "line": 30
2026-06-21T22:29:41.3409807Z             },
2026-06-21T22:29:41.3409908Z             {
2026-06-21T22:29:41.3410039Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.3410148Z               "line": 48
2026-06-21T22:29:41.3410254Z             }
2026-06-21T22:29:41.3410354Z           ]
2026-06-21T22:29:41.3410453Z         },
2026-06-21T22:29:41.3410560Z         "int": {
2026-06-21T22:29:41.3410673Z           "complete": false,
2026-06-21T22:29:41.3410773Z           "evidence": []
2026-06-21T22:29:41.3410879Z         },
2026-06-21T22:29:41.3410974Z         "unit": {
2026-06-21T22:29:41.3411088Z           "complete": true,
2026-06-21T22:29:41.3411189Z           "evidence": [
2026-06-21T22:29:41.3411293Z             {
2026-06-21T22:29:41.3411436Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3411651Z               "line": 162
2026-06-21T22:29:41.3411746Z             }
2026-06-21T22:29:41.3411852Z           ]
2026-06-21T22:29:41.3411946Z         }
2026-06-21T22:29:41.3412056Z       }
2026-06-21T22:29:41.3412153Z     },
2026-06-21T22:29:41.3412260Z     {
2026-06-21T22:29:41.3412393Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T22:29:41.3412806Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T22:29:41.3412920Z       "requiredStages": [
2026-06-21T22:29:41.3413020Z         "doc",
2026-06-21T22:29:41.3413131Z         "impl",
2026-06-21T22:29:41.3413235Z         "unit"
2026-06-21T22:29:41.3413445Z       ],
2026-06-21T22:29:41.3413555Z       "stages": {
2026-06-21T22:29:41.3413659Z         "doc": {
2026-06-21T22:29:41.3413779Z           "complete": true,
2026-06-21T22:29:41.3413869Z           "evidence": [
2026-06-21T22:29:41.3413974Z             {
2026-06-21T22:29:41.3414108Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3414227Z               "line": 151
2026-06-21T22:29:41.3414337Z             }
2026-06-21T22:29:41.3414437Z           ]
2026-06-21T22:29:41.3414537Z         },
2026-06-21T22:29:41.3414638Z         "impl": {
2026-06-21T22:29:41.3414757Z           "complete": true,
2026-06-21T22:29:41.3414856Z           "evidence": [
2026-06-21T22:29:41.3414962Z             {
2026-06-21T22:29:41.3415100Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3415199Z               "line": 22
2026-06-21T22:29:41.3415303Z             }
2026-06-21T22:29:41.3415405Z           ]
2026-06-21T22:29:41.3415509Z         },
2026-06-21T22:29:41.3415613Z         "int": {
2026-06-21T22:29:41.3415729Z           "complete": false,
2026-06-21T22:29:41.3415823Z           "evidence": []
2026-06-21T22:29:41.3415923Z         },
2026-06-21T22:29:41.3416029Z         "unit": {
2026-06-21T22:29:41.3416143Z           "complete": true,
2026-06-21T22:29:41.3416248Z           "evidence": [
2026-06-21T22:29:41.3416358Z             {
2026-06-21T22:29:41.3416505Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3416611Z               "line": 298
2026-06-21T22:29:41.3416715Z             }
2026-06-21T22:29:41.3416820Z           ]
2026-06-21T22:29:41.3416922Z         }
2026-06-21T22:29:41.3417025Z       }
2026-06-21T22:29:41.3417120Z     },
2026-06-21T22:29:41.3417226Z     {
2026-06-21T22:29:41.3417358Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T22:29:41.3417827Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T22:29:41.3417957Z       "requiredStages": [
2026-06-21T22:29:41.3418061Z         "impl",
2026-06-21T22:29:41.3418170Z         "unit"
2026-06-21T22:29:41.3418267Z       ],
2026-06-21T22:29:41.3418381Z       "stages": {
2026-06-21T22:29:41.3418480Z         "doc": {
2026-06-21T22:29:41.3418591Z           "complete": true,
2026-06-21T22:29:41.3418709Z           "evidence": [
2026-06-21T22:29:41.3418810Z             {
2026-06-21T22:29:41.3419038Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3419149Z               "line": 145
2026-06-21T22:29:41.3419244Z             }
2026-06-21T22:29:41.3419358Z           ]
2026-06-21T22:29:41.3419469Z         },
2026-06-21T22:29:41.3419573Z         "impl": {
2026-06-21T22:29:41.3419682Z           "complete": true,
2026-06-21T22:29:41.3419789Z           "evidence": [
2026-06-21T22:29:41.3419888Z             {
2026-06-21T22:29:41.3420050Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T22:29:41.3420160Z               "line": 160
2026-06-21T22:29:41.3420263Z             },
2026-06-21T22:29:41.3420368Z             {
2026-06-21T22:29:41.3420525Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3420632Z               "line": 200
2026-06-21T22:29:41.3420728Z             },
2026-06-21T22:29:41.3420828Z             {
2026-06-21T22:29:41.3421091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3421201Z               "line": 298
2026-06-21T22:29:41.3421290Z             },
2026-06-21T22:29:41.3421387Z             {
2026-06-21T22:29:41.3421530Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T22:29:41.3421633Z               "line": 20
2026-06-21T22:29:41.3421744Z             }
2026-06-21T22:29:41.3421843Z           ]
2026-06-21T22:29:41.3421939Z         },
2026-06-21T22:29:41.3422045Z         "int": {
2026-06-21T22:29:41.3422149Z           "complete": false,
2026-06-21T22:29:41.3422263Z           "evidence": []
2026-06-21T22:29:41.3422364Z         },
2026-06-21T22:29:41.3422573Z         "unit": {
2026-06-21T22:29:41.3422689Z           "complete": true,
2026-06-21T22:29:41.3422792Z           "evidence": [
2026-06-21T22:29:41.3422901Z             {
2026-06-21T22:29:41.3423049Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3423161Z               "line": 937
2026-06-21T22:29:41.3423265Z             },
2026-06-21T22:29:41.3423367Z             {
2026-06-21T22:29:41.3423518Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T22:29:41.3423614Z               "line": 88
2026-06-21T22:29:41.3423720Z             },
2026-06-21T22:29:41.3423819Z             {
2026-06-21T22:29:41.3423968Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3424072Z               "line": 851
2026-06-21T22:29:41.3424181Z             },
2026-06-21T22:29:41.3424283Z             {
2026-06-21T22:29:41.3424420Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3424534Z               "line": 870
2026-06-21T22:29:41.3424636Z             },
2026-06-21T22:29:41.3424745Z             {
2026-06-21T22:29:41.3424888Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3424997Z               "line": 279
2026-06-21T22:29:41.3425107Z             },
2026-06-21T22:29:41.3425212Z             {
2026-06-21T22:29:41.3425363Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T22:29:41.3425469Z               "line": 82
2026-06-21T22:29:41.3425575Z             },
2026-06-21T22:29:41.3425678Z             {
2026-06-21T22:29:41.3425815Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T22:29:41.3425921Z               "line": 99
2026-06-21T22:29:41.3426026Z             },
2026-06-21T22:29:41.3426130Z             {
2026-06-21T22:29:41.3426270Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T22:29:41.3426383Z               "line": 119
2026-06-21T22:29:41.3426493Z             }
2026-06-21T22:29:41.3426589Z           ]
2026-06-21T22:29:41.3426707Z         }
2026-06-21T22:29:41.3426799Z       }
2026-06-21T22:29:41.3426899Z     },
2026-06-21T22:29:41.3427004Z     {
2026-06-21T22:29:41.3427137Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T22:29:41.3428455Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T22:29:41.3428583Z       "requiredStages": [
2026-06-21T22:29:41.3428692Z         "doc",
2026-06-21T22:29:41.3428793Z         "impl",
2026-06-21T22:29:41.3428903Z         "unit"
2026-06-21T22:29:41.3429065Z       ],
2026-06-21T22:29:41.3429165Z       "stages": {
2026-06-21T22:29:41.3429270Z         "doc": {
2026-06-21T22:29:41.3429395Z           "complete": true,
2026-06-21T22:29:41.3429504Z           "evidence": [
2026-06-21T22:29:41.3429599Z             {
2026-06-21T22:29:41.3429738Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3429842Z               "line": 157
2026-06-21T22:29:41.3429946Z             }
2026-06-21T22:29:41.3430053Z           ]
2026-06-21T22:29:41.3430285Z         },
2026-06-21T22:29:41.3430396Z         "impl": {
2026-06-21T22:29:41.3430500Z           "complete": true,
2026-06-21T22:29:41.3430615Z           "evidence": [
2026-06-21T22:29:41.3430725Z             {
2026-06-21T22:29:41.3430871Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.3430985Z               "line": 137
2026-06-21T22:29:41.3431075Z             },
2026-06-21T22:29:41.3431178Z             {
2026-06-21T22:29:41.3431331Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3431446Z               "line": 564
2026-06-21T22:29:41.3431555Z             },
2026-06-21T22:29:41.3431771Z             {
2026-06-21T22:29:41.3431927Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3432037Z               "line": 571
2026-06-21T22:29:41.3432142Z             },
2026-06-21T22:29:41.3432242Z             {
2026-06-21T22:29:41.3432389Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3432504Z               "line": 227
2026-06-21T22:29:41.3432600Z             }
2026-06-21T22:29:41.3432704Z           ]
2026-06-21T22:29:41.3432799Z         },
2026-06-21T22:29:41.3432906Z         "int": {
2026-06-21T22:29:41.3433010Z           "complete": false,
2026-06-21T22:29:41.3433124Z           "evidence": []
2026-06-21T22:29:41.3433225Z         },
2026-06-21T22:29:41.3433325Z         "unit": {
2026-06-21T22:29:41.3433438Z           "complete": true,
2026-06-21T22:29:41.3433547Z           "evidence": [
2026-06-21T22:29:41.3433647Z             {
2026-06-21T22:29:41.3433797Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3433927Z               "line": 1622
2026-06-21T22:29:41.3434031Z             },
2026-06-21T22:29:41.3434136Z             {
2026-06-21T22:29:41.3434284Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3434393Z               "line": 1680
2026-06-21T22:29:41.3434499Z             },
2026-06-21T22:29:41.3434603Z             {
2026-06-21T22:29:41.3434751Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3434862Z               "line": 883
2026-06-21T22:29:41.3434961Z             }
2026-06-21T22:29:41.3435066Z           ]
2026-06-21T22:29:41.3435167Z         }
2026-06-21T22:29:41.3435271Z       }
2026-06-21T22:29:41.3435371Z     },
2026-06-21T22:29:41.3435482Z     {
2026-06-21T22:29:41.3435618Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T22:29:41.3435830Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T22:29:41.3435952Z       "requiredStages": [
2026-06-21T22:29:41.3436058Z         "impl",
2026-06-21T22:29:41.3436174Z         "unit"
2026-06-21T22:29:41.3436276Z       ],
2026-06-21T22:29:41.3436385Z       "stages": {
2026-06-21T22:29:41.3436491Z         "doc": {
2026-06-21T22:29:41.3436600Z           "complete": false,
2026-06-21T22:29:41.3436705Z           "evidence": []
2026-06-21T22:29:41.3436811Z         },
2026-06-21T22:29:41.3436920Z         "impl": {
2026-06-21T22:29:41.3437034Z           "complete": true,
2026-06-21T22:29:41.3437140Z           "evidence": [
2026-06-21T22:29:41.3437249Z             {
2026-06-21T22:29:41.3437387Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3437492Z               "line": 15
2026-06-21T22:29:41.3437592Z             },
2026-06-21T22:29:41.3437702Z             {
2026-06-21T22:29:41.3437840Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3437945Z               "line": 55
2026-06-21T22:29:41.3438051Z             },
2026-06-21T22:29:41.3438150Z             {
2026-06-21T22:29:41.3438298Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3438408Z               "line": 66
2026-06-21T22:29:41.3438517Z             },
2026-06-21T22:29:41.3438607Z             {
2026-06-21T22:29:41.3438749Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3438862Z               "line": 115
2026-06-21T22:29:41.3439120Z             },
2026-06-21T22:29:41.3439219Z             {
2026-06-21T22:29:41.3439363Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3439482Z               "line": 138
2026-06-21T22:29:41.3439586Z             }
2026-06-21T22:29:41.3439687Z           ]
2026-06-21T22:29:41.3439792Z         },
2026-06-21T22:29:41.3439896Z         "int": {
2026-06-21T22:29:41.3440012Z           "complete": false,
2026-06-21T22:29:41.3440116Z           "evidence": []
2026-06-21T22:29:41.3440221Z         },
2026-06-21T22:29:41.3440326Z         "unit": {
2026-06-21T22:29:41.3440436Z           "complete": true,
2026-06-21T22:29:41.3440545Z           "evidence": [
2026-06-21T22:29:41.3440764Z             {
2026-06-21T22:29:41.3440899Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3441008Z               "line": 363
2026-06-21T22:29:41.3441108Z             },
2026-06-21T22:29:41.3441218Z             {
2026-06-21T22:29:41.3441346Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3441455Z               "line": 369
2026-06-21T22:29:41.3441555Z             },
2026-06-21T22:29:41.3441663Z             {
2026-06-21T22:29:41.3441795Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3441901Z               "line": 383
2026-06-21T22:29:41.3442006Z             },
2026-06-21T22:29:41.3442105Z             {
2026-06-21T22:29:41.3442240Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3442345Z               "line": 392
2026-06-21T22:29:41.3442444Z             },
2026-06-21T22:29:41.3442550Z             {
2026-06-21T22:29:41.3442697Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3442816Z               "line": 195
2026-06-21T22:29:41.3442912Z             },
2026-06-21T22:29:41.3443012Z             {
2026-06-21T22:29:41.3443151Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3443255Z               "line": 208
2026-06-21T22:29:41.3443355Z             },
2026-06-21T22:29:41.3443456Z             {
2026-06-21T22:29:41.3443589Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3443684Z               "line": 271
2026-06-21T22:29:41.3443790Z             },
2026-06-21T22:29:41.3443885Z             {
2026-06-21T22:29:41.3444031Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3444131Z               "line": 290
2026-06-21T22:29:41.3444240Z             },
2026-06-21T22:29:41.3444343Z             {
2026-06-21T22:29:41.3444477Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3444583Z               "line": 319
2026-06-21T22:29:41.3444691Z             }
2026-06-21T22:29:41.3444788Z           ]
2026-06-21T22:29:41.3444883Z         }
2026-06-21T22:29:41.3444987Z       }
2026-06-21T22:29:41.3445093Z     },
2026-06-21T22:29:41.3445192Z     {
2026-06-21T22:29:41.3445325Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T22:29:41.3445606Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T22:29:41.3445732Z       "requiredStages": [
2026-06-21T22:29:41.3445831Z         "impl",
2026-06-21T22:29:41.3445926Z         "unit",
2026-06-21T22:29:41.3446037Z         "int"
2026-06-21T22:29:41.3446137Z       ],
2026-06-21T22:29:41.3446231Z       "stages": {
2026-06-21T22:29:41.3446333Z         "doc": {
2026-06-21T22:29:41.3446456Z           "complete": false,
2026-06-21T22:29:41.3446565Z           "evidence": []
2026-06-21T22:29:41.3446671Z         },
2026-06-21T22:29:41.3446780Z         "impl": {
2026-06-21T22:29:41.3446894Z           "complete": true,
2026-06-21T22:29:41.3446998Z           "evidence": [
2026-06-21T22:29:41.3447109Z             {
2026-06-21T22:29:41.3447255Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3447362Z               "line": 480
2026-06-21T22:29:41.3450122Z             },
2026-06-21T22:29:41.3450252Z             {
2026-06-21T22:29:41.3450409Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3450667Z               "line": 994
2026-06-21T22:29:41.3450771Z             },
2026-06-21T22:29:41.3450873Z             {
2026-06-21T22:29:41.3451019Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3451125Z               "line": 1039
2026-06-21T22:29:41.3451230Z             },
2026-06-21T22:29:41.3451319Z             {
2026-06-21T22:29:41.3451464Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3451568Z               "line": 1064
2026-06-21T22:29:41.3451673Z             },
2026-06-21T22:29:41.3451769Z             {
2026-06-21T22:29:41.3451920Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3452139Z               "line": 1845
2026-06-21T22:29:41.3452242Z             },
2026-06-21T22:29:41.3452336Z             {
2026-06-21T22:29:41.3452470Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3452585Z               "line": 2122
2026-06-21T22:29:41.3452694Z             },
2026-06-21T22:29:41.3452795Z             {
2026-06-21T22:29:41.3452937Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3453042Z               "line": 2253
2026-06-21T22:29:41.3453143Z             },
2026-06-21T22:29:41.3453243Z             {
2026-06-21T22:29:41.3453381Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3453491Z               "line": 2301
2026-06-21T22:29:41.3453596Z             },
2026-06-21T22:29:41.3453691Z             {
2026-06-21T22:29:41.3453825Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3453925Z               "line": 46
2026-06-21T22:29:41.3454036Z             },
2026-06-21T22:29:41.3454140Z             {
2026-06-21T22:29:41.3454277Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3454383Z               "line": 200
2026-06-21T22:29:41.3454492Z             },
2026-06-21T22:29:41.3454591Z             {
2026-06-21T22:29:41.3454734Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.3454837Z               "line": 132
2026-06-21T22:29:41.3454941Z             },
2026-06-21T22:29:41.3455047Z             {
2026-06-21T22:29:41.3455185Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.3455289Z               "line": 137
2026-06-21T22:29:41.3455391Z             },
2026-06-21T22:29:41.3455495Z             {
2026-06-21T22:29:41.3455624Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.3455738Z               "line": 183
2026-06-21T22:29:41.3455842Z             }
2026-06-21T22:29:41.3455939Z           ]
2026-06-21T22:29:41.3456044Z         },
2026-06-21T22:29:41.3456153Z         "int": {
2026-06-21T22:29:41.3456273Z           "complete": true,
2026-06-21T22:29:41.3456382Z           "evidence": [
2026-06-21T22:29:41.3456477Z             {
2026-06-21T22:29:41.3456635Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T22:29:41.3456739Z               "line": 27
2026-06-21T22:29:41.3456854Z             },
2026-06-21T22:29:41.3456955Z             {
2026-06-21T22:29:41.3457107Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T22:29:41.3457213Z               "line": 148
2026-06-21T22:29:41.3457322Z             },
2026-06-21T22:29:41.3457430Z             {
2026-06-21T22:29:41.3457573Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T22:29:41.3457688Z               "line": 200
2026-06-21T22:29:41.3457787Z             }
2026-06-21T22:29:41.3457892Z           ]
2026-06-21T22:29:41.3457998Z         },
2026-06-21T22:29:41.3458106Z         "unit": {
2026-06-21T22:29:41.3458222Z           "complete": true,
2026-06-21T22:29:41.3458322Z           "evidence": [
2026-06-21T22:29:41.3458431Z             {
2026-06-21T22:29:41.3458570Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3458679Z               "line": 366
2026-06-21T22:29:41.3458770Z             },
2026-06-21T22:29:41.3458861Z             {
2026-06-21T22:29:41.3459166Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3459275Z               "line": 398
2026-06-21T22:29:41.3459394Z             },
2026-06-21T22:29:41.3459491Z             {
2026-06-21T22:29:41.3459642Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T22:29:41.3459760Z               "line": 419
2026-06-21T22:29:41.3459856Z             },
2026-06-21T22:29:41.3459958Z             {
2026-06-21T22:29:41.3460106Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3460207Z               "line": 628
2026-06-21T22:29:41.3460302Z             },
2026-06-21T22:29:41.3460407Z             {
2026-06-21T22:29:41.3460659Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T22:29:41.3460765Z               "line": 289
2026-06-21T22:29:41.3460869Z             },
2026-06-21T22:29:41.3460959Z             {
2026-06-21T22:29:41.3461109Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T22:29:41.3461213Z               "line": 230
2026-06-21T22:29:41.3461326Z             },
2026-06-21T22:29:41.3461428Z             {
2026-06-21T22:29:41.3461565Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.3461670Z               "line": 526
2026-06-21T22:29:41.3461766Z             },
2026-06-21T22:29:41.3461870Z             {
2026-06-21T22:29:41.3462005Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.3462114Z               "line": 556
2026-06-21T22:29:41.3462218Z             }
2026-06-21T22:29:41.3462315Z           ]
2026-06-21T22:29:41.3462420Z         }
2026-06-21T22:29:41.3462518Z       }
2026-06-21T22:29:41.3462608Z     },
2026-06-21T22:29:41.3462718Z     {
2026-06-21T22:29:41.3462869Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T22:29:41.3464648Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T22:29:41.3464770Z       "requiredStages": [
2026-06-21T22:29:41.3464877Z         "doc",
2026-06-21T22:29:41.3464977Z         "impl",
2026-06-21T22:29:41.3465076Z         "unit"
2026-06-21T22:29:41.3465180Z       ],
2026-06-21T22:29:41.3465284Z       "stages": {
2026-06-21T22:29:41.3465388Z         "doc": {
2026-06-21T22:29:41.3465516Z           "complete": true,
2026-06-21T22:29:41.3465622Z           "evidence": [
2026-06-21T22:29:41.3465717Z             {
2026-06-21T22:29:41.3465849Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3465961Z               "line": 314
2026-06-21T22:29:41.3466064Z             }
2026-06-21T22:29:41.3466155Z           ]
2026-06-21T22:29:41.3466275Z         },
2026-06-21T22:29:41.3466384Z         "impl": {
2026-06-21T22:29:41.3466489Z           "complete": true,
2026-06-21T22:29:41.3466594Z           "evidence": [
2026-06-21T22:29:41.3466699Z             {
2026-06-21T22:29:41.3466862Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T22:29:41.3466966Z               "line": 33
2026-06-21T22:29:41.3467065Z             },
2026-06-21T22:29:41.3467167Z             {
2026-06-21T22:29:41.3467328Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T22:29:41.3467429Z               "line": 39
2026-06-21T22:29:41.3467539Z             }
2026-06-21T22:29:41.3467647Z           ]
2026-06-21T22:29:41.3467748Z         },
2026-06-21T22:29:41.3467844Z         "int": {
2026-06-21T22:29:41.3467952Z           "complete": false,
2026-06-21T22:29:41.3468061Z           "evidence": []
2026-06-21T22:29:41.3468162Z         },
2026-06-21T22:29:41.3468267Z         "unit": {
2026-06-21T22:29:41.3468510Z           "complete": true,
2026-06-21T22:29:41.3468624Z           "evidence": [
2026-06-21T22:29:41.3468724Z             {
2026-06-21T22:29:41.3468882Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T22:29:41.3469078Z               "line": 95
2026-06-21T22:29:41.3469168Z             }
2026-06-21T22:29:41.3469282Z           ]
2026-06-21T22:29:41.3469393Z         }
2026-06-21T22:29:41.3469488Z       }
2026-06-21T22:29:41.3469583Z     },
2026-06-21T22:29:41.3469683Z     {
2026-06-21T22:29:41.3469812Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T22:29:41.3472289Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T22:29:41.3472531Z       "requiredStages": [
2026-06-21T22:29:41.3472642Z         "impl",
2026-06-21T22:29:41.3472745Z         "unit"
2026-06-21T22:29:41.3472850Z       ],
2026-06-21T22:29:41.3472961Z       "stages": {
2026-06-21T22:29:41.3473054Z         "doc": {
2026-06-21T22:29:41.3473187Z           "complete": false,
2026-06-21T22:29:41.3473293Z           "evidence": []
2026-06-21T22:29:41.3473400Z         },
2026-06-21T22:29:41.3473509Z         "impl": {
2026-06-21T22:29:41.3473610Z           "complete": true,
2026-06-21T22:29:41.3473719Z           "evidence": [
2026-06-21T22:29:41.3473843Z             {
2026-06-21T22:29:41.3474001Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3474119Z               "line": 488
2026-06-21T22:29:41.3474231Z             }
2026-06-21T22:29:41.3474330Z           ]
2026-06-21T22:29:41.3474434Z         },
2026-06-21T22:29:41.3474536Z         "int": {
2026-06-21T22:29:41.3474649Z           "complete": false,
2026-06-21T22:29:41.3474759Z           "evidence": []
2026-06-21T22:29:41.3474865Z         },
2026-06-21T22:29:41.3474973Z         "unit": {
2026-06-21T22:29:41.3475083Z           "complete": true,
2026-06-21T22:29:41.3475203Z           "evidence": [
2026-06-21T22:29:41.3475292Z             {
2026-06-21T22:29:41.3475456Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3475570Z               "line": 1466
2026-06-21T22:29:41.3475673Z             }
2026-06-21T22:29:41.3475783Z           ]
2026-06-21T22:29:41.3475882Z         }
2026-06-21T22:29:41.3475986Z       }
2026-06-21T22:29:41.3476081Z     },
2026-06-21T22:29:41.3476172Z     {
2026-06-21T22:29:41.3476291Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T22:29:41.3478517Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T22:29:41.3478664Z       "requiredStages": [
2026-06-21T22:29:41.3478770Z         "unit"
2026-06-21T22:29:41.3478874Z       ],
2026-06-21T22:29:41.3479175Z       "stages": {
2026-06-21T22:29:41.3479270Z         "doc": {
2026-06-21T22:29:41.3479390Z           "complete": false,
2026-06-21T22:29:41.3479494Z           "evidence": []
2026-06-21T22:29:41.3479599Z         },
2026-06-21T22:29:41.3479695Z         "impl": {
2026-06-21T22:29:41.3479805Z           "complete": true,
2026-06-21T22:29:41.3479918Z           "evidence": [
2026-06-21T22:29:41.3480005Z             {
2026-06-21T22:29:41.3480138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3480248Z               "line": 3520
2026-06-21T22:29:41.3480344Z             },
2026-06-21T22:29:41.3480442Z             {
2026-06-21T22:29:41.3480677Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3480785Z               "line": 3572
2026-06-21T22:29:41.3480890Z             },
2026-06-21T22:29:41.3480995Z             {
2026-06-21T22:29:41.3481112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3481227Z               "line": 3617
2026-06-21T22:29:41.3481327Z             },
2026-06-21T22:29:41.3481422Z             {
2026-06-21T22:29:41.3481560Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3481660Z               "line": 92
2026-06-21T22:29:41.3481769Z             },
2026-06-21T22:29:41.3481861Z             {
2026-06-21T22:29:41.3481994Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3482098Z               "line": 148
2026-06-21T22:29:41.3482200Z             },
2026-06-21T22:29:41.3482309Z             {
2026-06-21T22:29:41.3482432Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3482534Z               "line": 192
2026-06-21T22:29:41.3482633Z             },
2026-06-21T22:29:41.3482738Z             {
2026-06-21T22:29:41.3482877Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3482985Z               "line": 200
2026-06-21T22:29:41.3483086Z             },
2026-06-21T22:29:41.3483188Z             {
2026-06-21T22:29:41.3483319Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3483420Z               "line": 211
2026-06-21T22:29:41.3483521Z             },
2026-06-21T22:29:41.3483624Z             {
2026-06-21T22:29:41.3483757Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3483867Z               "line": 265
2026-06-21T22:29:41.3483960Z             },
2026-06-21T22:29:41.3484064Z             {
2026-06-21T22:29:41.3484194Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3484298Z               "line": 279
2026-06-21T22:29:41.3484398Z             }
2026-06-21T22:29:41.3484499Z           ]
2026-06-21T22:29:41.3484603Z         },
2026-06-21T22:29:41.3484708Z         "int": {
2026-06-21T22:29:41.3484828Z           "complete": false,
2026-06-21T22:29:41.3484932Z           "evidence": []
2026-06-21T22:29:41.3485038Z         },
2026-06-21T22:29:41.3485148Z         "unit": {
2026-06-21T22:29:41.3485252Z           "complete": true,
2026-06-21T22:29:41.3485367Z           "evidence": [
2026-06-21T22:29:41.3485472Z             {
2026-06-21T22:29:41.3485610Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3485716Z               "line": 419
2026-06-21T22:29:41.3485824Z             },
2026-06-21T22:29:41.3485929Z             {
2026-06-21T22:29:41.3486055Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3486163Z               "line": 470
2026-06-21T22:29:41.3486257Z             },
2026-06-21T22:29:41.3486362Z             {
2026-06-21T22:29:41.3486484Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3486597Z               "line": 499
2026-06-21T22:29:41.3486699Z             },
2026-06-21T22:29:41.3486804Z             {
2026-06-21T22:29:41.3486936Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3487037Z               "line": 526
2026-06-21T22:29:41.3487142Z             }
2026-06-21T22:29:41.3487237Z           ]
2026-06-21T22:29:41.3487338Z         }
2026-06-21T22:29:41.3487443Z       }
2026-06-21T22:29:41.3487634Z     },
2026-06-21T22:29:41.3487738Z     {
2026-06-21T22:29:41.3487867Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T22:29:41.3488081Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T22:29:41.3488191Z       "requiredStages": [
2026-06-21T22:29:41.3488292Z         "impl",
2026-06-21T22:29:41.3488396Z         "unit"
2026-06-21T22:29:41.3488501Z       ],
2026-06-21T22:29:41.3488607Z       "stages": {
2026-06-21T22:29:41.3488706Z         "doc": {
2026-06-21T22:29:41.3488806Z           "complete": false,
2026-06-21T22:29:41.3488917Z           "evidence": []
2026-06-21T22:29:41.3489096Z         },
2026-06-21T22:29:41.3489302Z         "impl": {
2026-06-21T22:29:41.3489420Z           "complete": true,
2026-06-21T22:29:41.3489534Z           "evidence": [
2026-06-21T22:29:41.3489650Z             {
2026-06-21T22:29:41.3489810Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3489912Z               "line": 62
2026-06-21T22:29:41.3490026Z             },
2026-06-21T22:29:41.3490135Z             {
2026-06-21T22:29:41.3490274Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3490374Z               "line": 71
2026-06-21T22:29:41.3490474Z             },
2026-06-21T22:29:41.3490575Z             {
2026-06-21T22:29:41.3490717Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3490828Z               "line": 80
2026-06-21T22:29:41.3490923Z             },
2026-06-21T22:29:41.3491017Z             {
2026-06-21T22:29:41.3491162Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3491265Z               "line": 88
2026-06-21T22:29:41.3491374Z             },
2026-06-21T22:29:41.3491469Z             {
2026-06-21T22:29:41.3491602Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3491715Z               "line": 33
2026-06-21T22:29:41.3491810Z             },
2026-06-21T22:29:41.3491917Z             {
2026-06-21T22:29:41.3492044Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3492159Z               "line": 65
2026-06-21T22:29:41.3492254Z             },
2026-06-21T22:29:41.3492344Z             {
2026-06-21T22:29:41.3492479Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3492588Z               "line": 74
2026-06-21T22:29:41.3492692Z             },
2026-06-21T22:29:41.3492793Z             {
2026-06-21T22:29:41.3492926Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3493040Z               "line": 93
2026-06-21T22:29:41.3493137Z             },
2026-06-21T22:29:41.3493241Z             {
2026-06-21T22:29:41.3493365Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3493485Z               "line": 102
2026-06-21T22:29:41.3493584Z             },
2026-06-21T22:29:41.3493690Z             {
2026-06-21T22:29:41.3493837Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3493937Z               "line": 111
2026-06-21T22:29:41.3494057Z             },
2026-06-21T22:29:41.3494156Z             {
2026-06-21T22:29:41.3494293Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3494403Z               "line": 122
2026-06-21T22:29:41.3494506Z             },
2026-06-21T22:29:41.3494615Z             {
2026-06-21T22:29:41.3494740Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3494849Z               "line": 140
2026-06-21T22:29:41.3494949Z             },
2026-06-21T22:29:41.3495050Z             {
2026-06-21T22:29:41.3495182Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3495283Z               "line": 149
2026-06-21T22:29:41.3495389Z             },
2026-06-21T22:29:41.3495488Z             {
2026-06-21T22:29:41.3495627Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3495731Z               "line": 158
2026-06-21T22:29:41.3495836Z             },
2026-06-21T22:29:41.3495932Z             {
2026-06-21T22:29:41.3496069Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3496290Z               "line": 169
2026-06-21T22:29:41.3496375Z             },
2026-06-21T22:29:41.3496480Z             {
2026-06-21T22:29:41.3496605Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3496709Z               "line": 177
2026-06-21T22:29:41.3496808Z             },
2026-06-21T22:29:41.3496912Z             {
2026-06-21T22:29:41.3497049Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3497158Z               "line": 186
2026-06-21T22:29:41.3497264Z             },
2026-06-21T22:29:41.3497364Z             {
2026-06-21T22:29:41.3497491Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3497669Z               "line": 195
2026-06-21T22:29:41.3497773Z             },
2026-06-21T22:29:41.3497869Z             {
2026-06-21T22:29:41.3498003Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3498107Z               "line": 204
2026-06-21T22:29:41.3498208Z             },
2026-06-21T22:29:41.3498303Z             {
2026-06-21T22:29:41.3498436Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3498533Z               "line": 216
2026-06-21T22:29:41.3498632Z             },
2026-06-21T22:29:41.3498732Z             {
2026-06-21T22:29:41.3498872Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3499037Z               "line": 223
2026-06-21T22:29:41.3499138Z             },
2026-06-21T22:29:41.3499233Z             {
2026-06-21T22:29:41.3499371Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3499487Z               "line": 232
2026-06-21T22:29:41.3499585Z             },
2026-06-21T22:29:41.3499703Z             {
2026-06-21T22:29:41.3499833Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3499933Z               "line": 239
2026-06-21T22:29:41.3500041Z             },
2026-06-21T22:29:41.3500138Z             {
2026-06-21T22:29:41.3500267Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3500370Z               "line": 306
2026-06-21T22:29:41.3500472Z             },
2026-06-21T22:29:41.3500577Z             {
2026-06-21T22:29:41.3500700Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3500806Z               "line": 318
2026-06-21T22:29:41.3500910Z             },
2026-06-21T22:29:41.3501005Z             {
2026-06-21T22:29:41.3501135Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3501249Z               "line": 405
2026-06-21T22:29:41.3501349Z             }
2026-06-21T22:29:41.3501459Z           ]
2026-06-21T22:29:41.3501563Z         },
2026-06-21T22:29:41.3501668Z         "int": {
2026-06-21T22:29:41.3501788Z           "complete": false,
2026-06-21T22:29:41.3501901Z           "evidence": []
2026-06-21T22:29:41.3502005Z         },
2026-06-21T22:29:41.3502101Z         "unit": {
2026-06-21T22:29:41.3502223Z           "complete": true,
2026-06-21T22:29:41.3502337Z           "evidence": [
2026-06-21T22:29:41.3502447Z             {
2026-06-21T22:29:41.3502575Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3502676Z               "line": 487
2026-06-21T22:29:41.3502781Z             },
2026-06-21T22:29:41.3502880Z             {
2026-06-21T22:29:41.3503010Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3503124Z               "line": 528
2026-06-21T22:29:41.3503228Z             },
2026-06-21T22:29:41.3503334Z             {
2026-06-21T22:29:41.3503472Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3503577Z               "line": 541
2026-06-21T22:29:41.3503678Z             },
2026-06-21T22:29:41.3503787Z             {
2026-06-21T22:29:41.3503925Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3504035Z               "line": 627
2026-06-21T22:29:41.3504135Z             }
2026-06-21T22:29:41.3504231Z           ]
2026-06-21T22:29:41.3504336Z         }
2026-06-21T22:29:41.3504425Z       }
2026-06-21T22:29:41.3504651Z     },
2026-06-21T22:29:41.3504754Z     {
2026-06-21T22:29:41.3504882Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T22:29:41.3505109Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T22:29:41.3505214Z       "requiredStages": [
2026-06-21T22:29:41.3505319Z         "impl",
2026-06-21T22:29:41.3505419Z         "unit"
2026-06-21T22:29:41.3505518Z       ],
2026-06-21T22:29:41.3505625Z       "stages": {
2026-06-21T22:29:41.3505729Z         "doc": {
2026-06-21T22:29:41.3505833Z           "complete": false,
2026-06-21T22:29:41.3505944Z           "evidence": []
2026-06-21T22:29:41.3506044Z         },
2026-06-21T22:29:41.3506249Z         "impl": {
2026-06-21T22:29:41.3506364Z           "complete": true,
2026-06-21T22:29:41.3506472Z           "evidence": [
2026-06-21T22:29:41.3506574Z             {
2026-06-21T22:29:41.3506711Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.3506822Z               "line": 175
2026-06-21T22:29:41.3506940Z             },
2026-06-21T22:29:41.3507040Z             {
2026-06-21T22:29:41.3507184Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3507292Z               "line": 171
2026-06-21T22:29:41.3507383Z             }
2026-06-21T22:29:41.3507482Z           ]
2026-06-21T22:29:41.3507586Z         },
2026-06-21T22:29:41.3507690Z         "int": {
2026-06-21T22:29:41.3507804Z           "complete": false,
2026-06-21T22:29:41.3507911Z           "evidence": []
2026-06-21T22:29:41.3508014Z         },
2026-06-21T22:29:41.3508114Z         "unit": {
2026-06-21T22:29:41.3508234Z           "complete": true,
2026-06-21T22:29:41.3508328Z           "evidence": [
2026-06-21T22:29:41.3508439Z             {
2026-06-21T22:29:41.3508568Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.3508672Z               "line": 297
2026-06-21T22:29:41.3508768Z             },
2026-06-21T22:29:41.3508872Z             {
2026-06-21T22:29:41.3509093Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3509211Z               "line": 836
2026-06-21T22:29:41.3509316Z             },
2026-06-21T22:29:41.3509417Z             {
2026-06-21T22:29:41.3509559Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3509664Z               "line": 849
2026-06-21T22:29:41.3509766Z             }
2026-06-21T22:29:41.3509864Z           ]
2026-06-21T22:29:41.3509965Z         }
2026-06-21T22:29:41.3510061Z       }
2026-06-21T22:29:41.3510164Z     },
2026-06-21T22:29:41.3510268Z     {
2026-06-21T22:29:41.3510407Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T22:29:41.3510554Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T22:29:41.3510688Z       "requiredStages": [
2026-06-21T22:29:41.3510784Z         "impl",
2026-06-21T22:29:41.3510888Z         "unit"
2026-06-21T22:29:41.3510989Z       ],
2026-06-21T22:29:41.3511099Z       "stages": {
2026-06-21T22:29:41.3511203Z         "doc": {
2026-06-21T22:29:41.3511308Z           "complete": false,
2026-06-21T22:29:41.3511428Z           "evidence": []
2026-06-21T22:29:41.3511522Z         },
2026-06-21T22:29:41.3511628Z         "impl": {
2026-06-21T22:29:41.3511737Z           "complete": true,
2026-06-21T22:29:41.3511847Z           "evidence": [
2026-06-21T22:29:41.3511953Z             {
2026-06-21T22:29:41.3512094Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3512209Z               "line": 116
2026-06-21T22:29:41.3512306Z             },
2026-06-21T22:29:41.3512409Z             {
2026-06-21T22:29:41.3512556Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.3512666Z               "line": 507
2026-06-21T22:29:41.3512783Z             }
2026-06-21T22:29:41.3512887Z           ]
2026-06-21T22:29:41.3512989Z         },
2026-06-21T22:29:41.3513093Z         "int": {
2026-06-21T22:29:41.3513207Z           "complete": false,
2026-06-21T22:29:41.3513313Z           "evidence": []
2026-06-21T22:29:41.3513417Z         },
2026-06-21T22:29:41.3513522Z         "unit": {
2026-06-21T22:29:41.3513746Z           "complete": true,
2026-06-21T22:29:41.3513856Z           "evidence": [
2026-06-21T22:29:41.3513956Z             {
2026-06-21T22:29:41.3514103Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.3514210Z               "line": 541
2026-06-21T22:29:41.3514323Z             }
2026-06-21T22:29:41.3514423Z           ]
2026-06-21T22:29:41.3514520Z         }
2026-06-21T22:29:41.3514614Z       }
2026-06-21T22:29:41.3514714Z     },
2026-06-21T22:29:41.3514820Z     {
2026-06-21T22:29:41.3514948Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T22:29:41.3515144Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T22:29:41.3515356Z       "requiredStages": [
2026-06-21T22:29:41.3515461Z         "impl",
2026-06-21T22:29:41.3515575Z         "unit"
2026-06-21T22:29:41.3515673Z       ],
2026-06-21T22:29:41.3515779Z       "stages": {
2026-06-21T22:29:41.3515880Z         "doc": {
2026-06-21T22:29:41.3515988Z           "complete": false,
2026-06-21T22:29:41.3516113Z           "evidence": []
2026-06-21T22:29:41.3516218Z         },
2026-06-21T22:29:41.3516317Z         "impl": {
2026-06-21T22:29:41.3516418Z           "complete": true,
2026-06-21T22:29:41.3516523Z           "evidence": [
2026-06-21T22:29:41.3516623Z             {
2026-06-21T22:29:41.3516776Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3516889Z               "line": 552
2026-06-21T22:29:41.3516989Z             },
2026-06-21T22:29:41.3517086Z             {
2026-06-21T22:29:41.3517223Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3517333Z               "line": 28
2026-06-21T22:29:41.3517444Z             }
2026-06-21T22:29:41.3517538Z           ]
2026-06-21T22:29:41.3517638Z         },
2026-06-21T22:29:41.3517735Z         "int": {
2026-06-21T22:29:41.3517843Z           "complete": false,
2026-06-21T22:29:41.3517943Z           "evidence": []
2026-06-21T22:29:41.3518047Z         },
2026-06-21T22:29:41.3518156Z         "unit": {
2026-06-21T22:29:41.3518274Z           "complete": true,
2026-06-21T22:29:41.3518379Z           "evidence": [
2026-06-21T22:29:41.3518476Z             {
2026-06-21T22:29:41.3518617Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3518728Z               "line": 229
2026-06-21T22:29:41.3518832Z             }
2026-06-21T22:29:41.3518932Z           ]
2026-06-21T22:29:41.3519118Z         }
2026-06-21T22:29:41.3519217Z       }
2026-06-21T22:29:41.3519319Z     },
2026-06-21T22:29:41.3519423Z     {
2026-06-21T22:29:41.3519542Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T22:29:41.3519710Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T22:29:41.3519828Z       "requiredStages": [],
2026-06-21T22:29:41.3519934Z       "stages": {
2026-06-21T22:29:41.3520034Z         "doc": {
2026-06-21T22:29:41.3520143Z           "complete": false,
2026-06-21T22:29:41.3520254Z           "evidence": []
2026-06-21T22:29:41.3520340Z         },
2026-06-21T22:29:41.3520477Z         "impl": {
2026-06-21T22:29:41.3520583Z           "complete": false,
2026-06-21T22:29:41.3520701Z           "evidence": []
2026-06-21T22:29:41.3520800Z         },
2026-06-21T22:29:41.3520896Z         "int": {
2026-06-21T22:29:41.3521006Z           "complete": false,
2026-06-21T22:29:41.3521114Z           "evidence": []
2026-06-21T22:29:41.3521215Z         },
2026-06-21T22:29:41.3521320Z         "unit": {
2026-06-21T22:29:41.3521429Z           "complete": false,
2026-06-21T22:29:41.3521544Z           "evidence": []
2026-06-21T22:29:41.3521644Z         }
2026-06-21T22:29:41.3521748Z       }
2026-06-21T22:29:41.3521849Z     },
2026-06-21T22:29:41.3521954Z     {
2026-06-21T22:29:41.3522087Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T22:29:41.3522269Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T22:29:41.3522383Z       "requiredStages": [
2026-06-21T22:29:41.3522489Z         "impl",
2026-06-21T22:29:41.3522593Z         "unit"
2026-06-21T22:29:41.3522798Z       ],
2026-06-21T22:29:41.3522899Z       "stages": {
2026-06-21T22:29:41.3523003Z         "doc": {
2026-06-21T22:29:41.3523116Z           "complete": false,
2026-06-21T22:29:41.3523221Z           "evidence": []
2026-06-21T22:29:41.3523324Z         },
2026-06-21T22:29:41.3523433Z         "impl": {
2026-06-21T22:29:41.3523534Z           "complete": true,
2026-06-21T22:29:41.3523643Z           "evidence": [
2026-06-21T22:29:41.3523738Z             {
2026-06-21T22:29:41.3523868Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T22:29:41.3523972Z               "line": 19
2026-06-21T22:29:41.3524072Z             },
2026-06-21T22:29:41.3524268Z             {
2026-06-21T22:29:41.3524416Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3524526Z               "line": 463
2026-06-21T22:29:41.3524626Z             },
2026-06-21T22:29:41.3524731Z             {
2026-06-21T22:29:41.3524878Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3524993Z               "line": 499
2026-06-21T22:29:41.3525094Z             },
2026-06-21T22:29:41.3525193Z             {
2026-06-21T22:29:41.3525336Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3525442Z               "line": 547
2026-06-21T22:29:41.3525550Z             },
2026-06-21T22:29:41.3525656Z             {
2026-06-21T22:29:41.3525790Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.3525903Z               "line": 15
2026-06-21T22:29:41.3526002Z             },
2026-06-21T22:29:41.3526107Z             {
2026-06-21T22:29:41.3526243Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.3526358Z               "line": 48
2026-06-21T22:29:41.3526458Z             },
2026-06-21T22:29:41.3526558Z             {
2026-06-21T22:29:41.3526688Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.3526797Z               "line": 119
2026-06-21T22:29:41.3526896Z             },
2026-06-21T22:29:41.3527003Z             {
2026-06-21T22:29:41.3527136Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3527244Z               "line": 3948
2026-06-21T22:29:41.3527345Z             }
2026-06-21T22:29:41.3527445Z           ]
2026-06-21T22:29:41.3527545Z         },
2026-06-21T22:29:41.3527651Z         "int": {
2026-06-21T22:29:41.3527765Z           "complete": false,
2026-06-21T22:29:41.3527860Z           "evidence": []
2026-06-21T22:29:41.3527962Z         },
2026-06-21T22:29:41.3528056Z         "unit": {
2026-06-21T22:29:41.3528161Z           "complete": true,
2026-06-21T22:29:41.3528271Z           "evidence": [
2026-06-21T22:29:41.3528380Z             {
2026-06-21T22:29:41.3528526Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3528636Z               "line": 765
2026-06-21T22:29:41.3528744Z             },
2026-06-21T22:29:41.3528848Z             {
2026-06-21T22:29:41.3529068Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.3529172Z               "line": 165
2026-06-21T22:29:41.3529293Z             },
2026-06-21T22:29:41.3529407Z             {
2026-06-21T22:29:41.3529530Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T22:29:41.3529631Z               "line": 175
2026-06-21T22:29:41.3529731Z             }
2026-06-21T22:29:41.3529830Z           ]
2026-06-21T22:29:41.3529932Z         }
2026-06-21T22:29:41.3530031Z       }
2026-06-21T22:29:41.3530141Z     },
2026-06-21T22:29:41.3530237Z     {
2026-06-21T22:29:41.3530375Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T22:29:41.3531276Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T22:29:41.3531408Z       "requiredStages": [
2026-06-21T22:29:41.3531513Z         "impl",
2026-06-21T22:29:41.3534075Z         "unit"
2026-06-21T22:29:41.3534366Z       ],
2026-06-21T22:29:41.3534476Z       "stages": {
2026-06-21T22:29:41.3534585Z         "doc": {
2026-06-21T22:29:41.3534701Z           "complete": false,
2026-06-21T22:29:41.3534814Z           "evidence": []
2026-06-21T22:29:41.3534914Z         },
2026-06-21T22:29:41.3535020Z         "impl": {
2026-06-21T22:29:41.3535129Z           "complete": true,
2026-06-21T22:29:41.3535238Z           "evidence": [
2026-06-21T22:29:41.3535339Z             {
2026-06-21T22:29:41.3535472Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3535586Z               "line": 192
2026-06-21T22:29:41.3535687Z             },
2026-06-21T22:29:41.3535940Z             {
2026-06-21T22:29:41.3536072Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3536187Z               "line": 279
2026-06-21T22:29:41.3536294Z             }
2026-06-21T22:29:41.3536392Z           ]
2026-06-21T22:29:41.3536486Z         },
2026-06-21T22:29:41.3536591Z         "int": {
2026-06-21T22:29:41.3536709Z           "complete": false,
2026-06-21T22:29:41.3536813Z           "evidence": []
2026-06-21T22:29:41.3536913Z         },
2026-06-21T22:29:41.3537019Z         "unit": {
2026-06-21T22:29:41.3537132Z           "complete": true,
2026-06-21T22:29:41.3537248Z           "evidence": [
2026-06-21T22:29:41.3537348Z             {
2026-06-21T22:29:41.3537489Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3537600Z               "line": 470
2026-06-21T22:29:41.3537705Z             },
2026-06-21T22:29:41.3537804Z             {
2026-06-21T22:29:41.3537934Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.3538039Z               "line": 526
2026-06-21T22:29:41.3538143Z             }
2026-06-21T22:29:41.3538249Z           ]
2026-06-21T22:29:41.3538353Z         }
2026-06-21T22:29:41.3538458Z       }
2026-06-21T22:29:41.3538559Z     },
2026-06-21T22:29:41.3538658Z     {
2026-06-21T22:29:41.3538798Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T22:29:41.3542808Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T22:29:41.3542965Z       "requiredStages": [
2026-06-21T22:29:41.3543070Z         "impl",
2026-06-21T22:29:41.3543170Z         "unit",
2026-06-21T22:29:41.3543274Z         "int"
2026-06-21T22:29:41.3543380Z       ],
2026-06-21T22:29:41.3543485Z       "stages": {
2026-06-21T22:29:41.3543594Z         "doc": {
2026-06-21T22:29:41.3543714Z           "complete": false,
2026-06-21T22:29:41.3543832Z           "evidence": []
2026-06-21T22:29:41.3543938Z         },
2026-06-21T22:29:41.3544043Z         "impl": {
2026-06-21T22:29:41.3544151Z           "complete": true,
2026-06-21T22:29:41.3544261Z           "evidence": [
2026-06-21T22:29:41.3544360Z             {
2026-06-21T22:29:41.3544520Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3544759Z               "line": 116
2026-06-21T22:29:41.3544863Z             },
2026-06-21T22:29:41.3544960Z             {
2026-06-21T22:29:41.3545106Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.3545222Z               "line": 132
2026-06-21T22:29:41.3545322Z             },
2026-06-21T22:29:41.3545426Z             {
2026-06-21T22:29:41.3545575Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.3545689Z               "line": 434
2026-06-21T22:29:41.3545788Z             },
2026-06-21T22:29:41.3545895Z             {
2026-06-21T22:29:41.3546046Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3546257Z               "line": 139
2026-06-21T22:29:41.3546361Z             },
2026-06-21T22:29:41.3546461Z             {
2026-06-21T22:29:41.3546609Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3546714Z               "line": 326
2026-06-21T22:29:41.3546829Z             },
2026-06-21T22:29:41.3546929Z             {
2026-06-21T22:29:41.3547070Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3547185Z               "line": 555
2026-06-21T22:29:41.3547283Z             }
2026-06-21T22:29:41.3547387Z           ]
2026-06-21T22:29:41.3547493Z         },
2026-06-21T22:29:41.3547593Z         "int": {
2026-06-21T22:29:41.3547711Z           "complete": true,
2026-06-21T22:29:41.3547823Z           "evidence": [
2026-06-21T22:29:41.3547922Z             {
2026-06-21T22:29:41.3548089Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T22:29:41.3548198Z               "line": 32
2026-06-21T22:29:41.3548303Z             }
2026-06-21T22:29:41.3548408Z           ]
2026-06-21T22:29:41.3548513Z         },
2026-06-21T22:29:41.3548618Z         "unit": {
2026-06-21T22:29:41.3548728Z           "complete": true,
2026-06-21T22:29:41.3548828Z           "evidence": [
2026-06-21T22:29:41.3548932Z             {
2026-06-21T22:29:41.3549162Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3549276Z               "line": 625
2026-06-21T22:29:41.3549372Z             },
2026-06-21T22:29:41.3549477Z             {
2026-06-21T22:29:41.3549623Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3549723Z               "line": 646
2026-06-21T22:29:41.3549831Z             },
2026-06-21T22:29:41.3549925Z             {
2026-06-21T22:29:41.3550069Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3550170Z               "line": 662
2026-06-21T22:29:41.3550273Z             },
2026-06-21T22:29:41.3550375Z             {
2026-06-21T22:29:41.3550522Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3550626Z               "line": 680
2026-06-21T22:29:41.3550727Z             },
2026-06-21T22:29:41.3550842Z             {
2026-06-21T22:29:41.3550990Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3551090Z               "line": 704
2026-06-21T22:29:41.3551189Z             }
2026-06-21T22:29:41.3551285Z           ]
2026-06-21T22:29:41.3551395Z         }
2026-06-21T22:29:41.3551495Z       }
2026-06-21T22:29:41.3551595Z     },
2026-06-21T22:29:41.3551705Z     {
2026-06-21T22:29:41.3551833Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T22:29:41.3552006Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T22:29:41.3552119Z       "requiredStages": [
2026-06-21T22:29:41.3552215Z         "impl",
2026-06-21T22:29:41.3552320Z         "unit"
2026-06-21T22:29:41.3552433Z       ],
2026-06-21T22:29:41.3552533Z       "stages": {
2026-06-21T22:29:41.3552638Z         "doc": {
2026-06-21T22:29:41.3552748Z           "complete": false,
2026-06-21T22:29:41.3552847Z           "evidence": []
2026-06-21T22:29:41.3552953Z         },
2026-06-21T22:29:41.3553058Z         "impl": {
2026-06-21T22:29:41.3553176Z           "complete": true,
2026-06-21T22:29:41.3553282Z           "evidence": [
2026-06-21T22:29:41.3553481Z             {
2026-06-21T22:29:41.3553625Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3553735Z               "line": 35
2026-06-21T22:29:41.3553839Z             }
2026-06-21T22:29:41.3553936Z           ]
2026-06-21T22:29:41.3554035Z         },
2026-06-21T22:29:41.3554140Z         "int": {
2026-06-21T22:29:41.3554246Z           "complete": false,
2026-06-21T22:29:41.3554358Z           "evidence": []
2026-06-21T22:29:41.3554450Z         },
2026-06-21T22:29:41.3554556Z         "unit": {
2026-06-21T22:29:41.3554664Z           "complete": true,
2026-06-21T22:29:41.3554777Z           "evidence": [
2026-06-21T22:29:41.3554981Z             {
2026-06-21T22:29:41.3555118Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T22:29:41.3555224Z               "line": 220
2026-06-21T22:29:41.3555328Z             }
2026-06-21T22:29:41.3555423Z           ]
2026-06-21T22:29:41.3555515Z         }
2026-06-21T22:29:41.3555615Z       }
2026-06-21T22:29:41.3555724Z     },
2026-06-21T22:29:41.3555825Z     {
2026-06-21T22:29:41.3555963Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T22:29:41.3559178Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T22:29:41.3559365Z       "requiredStages": [
2026-06-21T22:29:41.3559468Z         "impl",
2026-06-21T22:29:41.3559573Z         "unit",
2026-06-21T22:29:41.3559666Z         "int"
2026-06-21T22:29:41.3559764Z       ],
2026-06-21T22:29:41.3559865Z       "stages": {
2026-06-21T22:29:41.3559971Z         "doc": {
2026-06-21T22:29:41.3560074Z           "complete": false,
2026-06-21T22:29:41.3560187Z           "evidence": []
2026-06-21T22:29:41.3560312Z         },
2026-06-21T22:29:41.3560405Z         "impl": {
2026-06-21T22:29:41.3560523Z           "complete": true,
2026-06-21T22:29:41.3560629Z           "evidence": [
2026-06-21T22:29:41.3560725Z             {
2026-06-21T22:29:41.3560882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3561011Z               "line": 202
2026-06-21T22:29:41.3561110Z             },
2026-06-21T22:29:41.3561211Z             {
2026-06-21T22:29:41.3561354Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.3561463Z               "line": 107
2026-06-21T22:29:41.3561574Z             },
2026-06-21T22:29:41.3561673Z             {
2026-06-21T22:29:41.3561801Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.3561908Z               "line": 138
2026-06-21T22:29:41.3562012Z             },
2026-06-21T22:29:41.3562112Z             {
2026-06-21T22:29:41.3562260Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3562369Z               "line": 209
2026-06-21T22:29:41.3562465Z             },
2026-06-21T22:29:41.3562571Z             {
2026-06-21T22:29:41.3562718Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3562823Z               "line": 246
2026-06-21T22:29:41.3562918Z             },
2026-06-21T22:29:41.3563012Z             {
2026-06-21T22:29:41.3563271Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3563378Z               "line": 379
2026-06-21T22:29:41.3563480Z             }
2026-06-21T22:29:41.3563589Z           ]
2026-06-21T22:29:41.3563679Z         },
2026-06-21T22:29:41.3563790Z         "int": {
2026-06-21T22:29:41.3563899Z           "complete": true,
2026-06-21T22:29:41.3564013Z           "evidence": [
2026-06-21T22:29:41.3564114Z             {
2026-06-21T22:29:41.3564281Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T22:29:41.3564380Z               "line": 17
2026-06-21T22:29:41.3564482Z             }
2026-06-21T22:29:41.3564690Z           ]
2026-06-21T22:29:41.3564787Z         },
2026-06-21T22:29:41.3564891Z         "unit": {
2026-06-21T22:29:41.3565000Z           "complete": true,
2026-06-21T22:29:41.3565106Z           "evidence": [
2026-06-21T22:29:41.3565215Z             {
2026-06-21T22:29:41.3565356Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3565476Z               "line": 982
2026-06-21T22:29:41.3565578Z             }
2026-06-21T22:29:41.3565683Z           ]
2026-06-21T22:29:41.3565785Z         }
2026-06-21T22:29:41.3565889Z       }
2026-06-21T22:29:41.3565993Z     },
2026-06-21T22:29:41.3566090Z     {
2026-06-21T22:29:41.3566222Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T22:29:41.3566500Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T22:29:41.3566618Z       "requiredStages": [
2026-06-21T22:29:41.3566714Z         "impl",
2026-06-21T22:29:41.3566824Z         "unit"
2026-06-21T22:29:41.3566928Z       ],
2026-06-21T22:29:41.3567034Z       "stages": {
2026-06-21T22:29:41.3567133Z         "doc": {
2026-06-21T22:29:41.3567247Z           "complete": false,
2026-06-21T22:29:41.3567358Z           "evidence": []
2026-06-21T22:29:41.3567457Z         },
2026-06-21T22:29:41.3567567Z         "impl": {
2026-06-21T22:29:41.3567683Z           "complete": true,
2026-06-21T22:29:41.3567790Z           "evidence": [
2026-06-21T22:29:41.3567887Z             {
2026-06-21T22:29:41.3568036Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.3568138Z               "line": 405
2026-06-21T22:29:41.3568243Z             },
2026-06-21T22:29:41.3568353Z             {
2026-06-21T22:29:41.3568498Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.3568603Z               "line": 409
2026-06-21T22:29:41.3568709Z             },
2026-06-21T22:29:41.3568808Z             {
2026-06-21T22:29:41.3569043Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.3569146Z               "line": 156
2026-06-21T22:29:41.3569248Z             }
2026-06-21T22:29:41.3569352Z           ]
2026-06-21T22:29:41.3569456Z         },
2026-06-21T22:29:41.3569562Z         "int": {
2026-06-21T22:29:41.3569671Z           "complete": false,
2026-06-21T22:29:41.3569786Z           "evidence": []
2026-06-21T22:29:41.3569882Z         },
2026-06-21T22:29:41.3569986Z         "unit": {
2026-06-21T22:29:41.3570086Z           "complete": true,
2026-06-21T22:29:41.3570192Z           "evidence": [
2026-06-21T22:29:41.3570296Z             {
2026-06-21T22:29:41.3570439Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.3570545Z               "line": 865
2026-06-21T22:29:41.3570639Z             },
2026-06-21T22:29:41.3570738Z             {
2026-06-21T22:29:41.3570877Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.3570979Z               "line": 879
2026-06-21T22:29:41.3571083Z             },
2026-06-21T22:29:41.3571175Z             {
2026-06-21T22:29:41.3571351Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.3571465Z               "line": 898
2026-06-21T22:29:41.3571566Z             },
2026-06-21T22:29:41.3571675Z             {
2026-06-21T22:29:41.3571815Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.3571929Z               "line": 915
2026-06-21T22:29:41.3572129Z             },
2026-06-21T22:29:41.3572243Z             {
2026-06-21T22:29:41.3572395Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.3572505Z               "line": 441
2026-06-21T22:29:41.3572605Z             }
2026-06-21T22:29:41.3572710Z           ]
2026-06-21T22:29:41.3572806Z         }
2026-06-21T22:29:41.3572905Z       }
2026-06-21T22:29:41.3572996Z     },
2026-06-21T22:29:41.3573103Z     {
2026-06-21T22:29:41.3573239Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T22:29:41.3583047Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T22:29:41.3583460Z       "requiredStages": [
2026-06-21T22:29:41.3583566Z         "doc",
2026-06-21T22:29:41.3583677Z         "impl",
2026-06-21T22:29:41.3583780Z         "unit",
2026-06-21T22:29:41.3583876Z         "int"
2026-06-21T22:29:41.3583977Z       ],
2026-06-21T22:29:41.3584080Z       "stages": {
2026-06-21T22:29:41.3584285Z         "doc": {
2026-06-21T22:29:41.3584395Z           "complete": true,
2026-06-21T22:29:41.3584499Z           "evidence": [
2026-06-21T22:29:41.3584595Z             {
2026-06-21T22:29:41.3584715Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3584819Z               "line": 420
2026-06-21T22:29:41.3584925Z             },
2026-06-21T22:29:41.3585053Z             {
2026-06-21T22:29:41.3585196Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3585301Z               "line": 402
2026-06-21T22:29:41.3585401Z             }
2026-06-21T22:29:41.3585505Z           ]
2026-06-21T22:29:41.3585606Z         },
2026-06-21T22:29:41.3585706Z         "impl": {
2026-06-21T22:29:41.3585903Z           "complete": true,
2026-06-21T22:29:41.3586011Z           "evidence": [
2026-06-21T22:29:41.3586116Z             {
2026-06-21T22:29:41.3586255Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3586364Z               "line": 797
2026-06-21T22:29:41.3586463Z             },
2026-06-21T22:29:41.3586572Z             {
2026-06-21T22:29:41.3586723Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3586823Z               "line": 822
2026-06-21T22:29:41.3586933Z             },
2026-06-21T22:29:41.3587028Z             {
2026-06-21T22:29:41.3587172Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3587271Z               "line": 839
2026-06-21T22:29:41.3587371Z             },
2026-06-21T22:29:41.3587472Z             {
2026-06-21T22:29:41.3587605Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3587728Z               "line": 854
2026-06-21T22:29:41.3587834Z             },
2026-06-21T22:29:41.3587939Z             {
2026-06-21T22:29:41.3588072Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3588178Z               "line": 874
2026-06-21T22:29:41.3588282Z             },
2026-06-21T22:29:41.3588387Z             {
2026-06-21T22:29:41.3588526Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3588640Z               "line": 964
2026-06-21T22:29:41.3588741Z             },
2026-06-21T22:29:41.3588841Z             {
2026-06-21T22:29:41.3589085Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3589193Z               "line": 1016
2026-06-21T22:29:41.3589282Z             },
2026-06-21T22:29:41.3589402Z             {
2026-06-21T22:29:41.3589543Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3589656Z               "line": 1075
2026-06-21T22:29:41.3589752Z             },
2026-06-21T22:29:41.3589862Z             {
2026-06-21T22:29:41.3590014Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3590125Z               "line": 527
2026-06-21T22:29:41.3590229Z             }
2026-06-21T22:29:41.3590329Z           ]
2026-06-21T22:29:41.3590435Z         },
2026-06-21T22:29:41.3590539Z         "int": {
2026-06-21T22:29:41.3590644Z           "complete": true,
2026-06-21T22:29:41.3590754Z           "evidence": [
2026-06-21T22:29:41.3590863Z             {
2026-06-21T22:29:41.3590993Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T22:29:41.3591093Z               "line": 35
2026-06-21T22:29:41.3591201Z             },
2026-06-21T22:29:41.3591298Z             {
2026-06-21T22:29:41.3591445Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T22:29:41.3591559Z               "line": 569
2026-06-21T22:29:41.3591661Z             },
2026-06-21T22:29:41.3591769Z             {
2026-06-21T22:29:41.3591910Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T22:29:41.3592021Z               "line": 590
2026-06-21T22:29:41.3592123Z             }
2026-06-21T22:29:41.3592227Z           ]
2026-06-21T22:29:41.3592329Z         },
2026-06-21T22:29:41.3592434Z         "unit": {
2026-06-21T22:29:41.3592552Z           "complete": true,
2026-06-21T22:29:41.3592658Z           "evidence": [
2026-06-21T22:29:41.3592762Z             {
2026-06-21T22:29:41.3592896Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3593114Z               "line": 1202
2026-06-21T22:29:41.3593216Z             },
2026-06-21T22:29:41.3593311Z             {
2026-06-21T22:29:41.3593443Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3593598Z               "line": 1246
2026-06-21T22:29:41.3593702Z             },
2026-06-21T22:29:41.3593812Z             {
2026-06-21T22:29:41.3593950Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3594055Z               "line": 1260
2026-06-21T22:29:41.3594155Z             },
2026-06-21T22:29:41.3594261Z             {
2026-06-21T22:29:41.3594499Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3594608Z               "line": 1278
2026-06-21T22:29:41.3594712Z             },
2026-06-21T22:29:41.3594802Z             {
2026-06-21T22:29:41.3594932Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3595040Z               "line": 1302
2026-06-21T22:29:41.3595160Z             },
2026-06-21T22:29:41.3595260Z             {
2026-06-21T22:29:41.3595403Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3595509Z               "line": 1529
2026-06-21T22:29:41.3595609Z             }
2026-06-21T22:29:41.3595708Z           ]
2026-06-21T22:29:41.3595804Z         }
2026-06-21T22:29:41.3595913Z       }
2026-06-21T22:29:41.3596008Z     },
2026-06-21T22:29:41.3596104Z     {
2026-06-21T22:29:41.3596247Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T22:29:41.3598442Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T22:29:41.3598575Z       "requiredStages": [
2026-06-21T22:29:41.3598671Z         "unit",
2026-06-21T22:29:41.3598780Z         "int"
2026-06-21T22:29:41.3598890Z       ],
2026-06-21T22:29:41.3599072Z       "stages": {
2026-06-21T22:29:41.3599176Z         "doc": {
2026-06-21T22:29:41.3599286Z           "complete": true,
2026-06-21T22:29:41.3599410Z           "evidence": [
2026-06-21T22:29:41.3599534Z             {
2026-06-21T22:29:41.3599659Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3599762Z               "line": 381
2026-06-21T22:29:41.3599861Z             }
2026-06-21T22:29:41.3599972Z           ]
2026-06-21T22:29:41.3600065Z         },
2026-06-21T22:29:41.3600173Z         "impl": {
2026-06-21T22:29:41.3600308Z           "complete": true,
2026-06-21T22:29:41.3600418Z           "evidence": [
2026-06-21T22:29:41.3600521Z             {
2026-06-21T22:29:41.3600656Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3600765Z               "line": 143
2026-06-21T22:29:41.3600865Z             }
2026-06-21T22:29:41.3600966Z           ]
2026-06-21T22:29:41.3601123Z         },
2026-06-21T22:29:41.3601228Z         "int": {
2026-06-21T22:29:41.3601361Z           "complete": true,
2026-06-21T22:29:41.3601466Z           "evidence": [
2026-06-21T22:29:41.3601572Z             {
2026-06-21T22:29:41.3601713Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3601824Z               "line": 1042
2026-06-21T22:29:41.3601934Z             }
2026-06-21T22:29:41.3602028Z           ]
2026-06-21T22:29:41.3602134Z         },
2026-06-21T22:29:41.3602235Z         "unit": {
2026-06-21T22:29:41.3602353Z           "complete": true,
2026-06-21T22:29:41.3602461Z           "evidence": [
2026-06-21T22:29:41.3602670Z             {
2026-06-21T22:29:41.3602822Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3602927Z               "line": 2488
2026-06-21T22:29:41.3603026Z             }
2026-06-21T22:29:41.3603127Z           ]
2026-06-21T22:29:41.3603233Z         }
2026-06-21T22:29:41.3603323Z       }
2026-06-21T22:29:41.3603427Z     },
2026-06-21T22:29:41.3603528Z     {
2026-06-21T22:29:41.3603670Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-21T22:29:41.3607881Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-21T22:29:41.3608272Z       "requiredStages": [
2026-06-21T22:29:41.3608397Z         "doc",
2026-06-21T22:29:41.3608496Z         "impl",
2026-06-21T22:29:41.3608597Z         "unit"
2026-06-21T22:29:41.3608697Z       ],
2026-06-21T22:29:41.3608811Z       "stages": {
2026-06-21T22:29:41.3608912Z         "doc": {
2026-06-21T22:29:41.3609102Z           "complete": true,
2026-06-21T22:29:41.3609202Z           "evidence": [
2026-06-21T22:29:41.3609303Z             {
2026-06-21T22:29:41.3609436Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3609541Z               "line": 342
2026-06-21T22:29:41.3609646Z             }
2026-06-21T22:29:41.3609746Z           ]
2026-06-21T22:29:41.3609851Z         },
2026-06-21T22:29:41.3609956Z         "impl": {
2026-06-21T22:29:41.3610084Z           "complete": true,
2026-06-21T22:29:41.3610190Z           "evidence": [
2026-06-21T22:29:41.3610285Z             {
2026-06-21T22:29:41.3610435Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3610541Z               "line": 207
2026-06-21T22:29:41.3610644Z             },
2026-06-21T22:29:41.3610752Z             {
2026-06-21T22:29:41.3610892Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3610992Z               "line": 892
2026-06-21T22:29:41.3611096Z             }
2026-06-21T22:29:41.3611197Z           ]
2026-06-21T22:29:41.3611297Z         },
2026-06-21T22:29:41.3611396Z         "int": {
2026-06-21T22:29:41.3611503Z           "complete": false,
2026-06-21T22:29:41.3611602Z           "evidence": []
2026-06-21T22:29:41.3611702Z         },
2026-06-21T22:29:41.3611793Z         "unit": {
2026-06-21T22:29:41.3611902Z           "complete": true,
2026-06-21T22:29:41.3612012Z           "evidence": [
2026-06-21T22:29:41.3612118Z             {
2026-06-21T22:29:41.3612265Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.3612369Z               "line": 1553
2026-06-21T22:29:41.3612466Z             }
2026-06-21T22:29:41.3612570Z           ]
2026-06-21T22:29:41.3612674Z         }
2026-06-21T22:29:41.3612776Z       }
2026-06-21T22:29:41.3613002Z     },
2026-06-21T22:29:41.3613107Z     {
2026-06-21T22:29:41.3613305Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T22:29:41.3618647Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T22:29:41.3619027Z       "requiredStages": [
2026-06-21T22:29:41.3619147Z         "impl",
2026-06-21T22:29:41.3619252Z         "unit"
2026-06-21T22:29:41.3619347Z       ],
2026-06-21T22:29:41.3619458Z       "stages": {
2026-06-21T22:29:41.3619557Z         "doc": {
2026-06-21T22:29:41.3619681Z           "complete": false,
2026-06-21T22:29:41.3619787Z           "evidence": []
2026-06-21T22:29:41.3619891Z         },
2026-06-21T22:29:41.3620000Z         "impl": {
2026-06-21T22:29:41.3620111Z           "complete": true,
2026-06-21T22:29:41.3620215Z           "evidence": [
2026-06-21T22:29:41.3620320Z             {
2026-06-21T22:29:41.3620470Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3620601Z               "line": 365
2026-06-21T22:29:41.3620702Z             },
2026-06-21T22:29:41.3620803Z             {
2026-06-21T22:29:41.3620949Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3621058Z               "line": 821
2026-06-21T22:29:41.3621158Z             }
2026-06-21T22:29:41.3621261Z           ]
2026-06-21T22:29:41.3621356Z         },
2026-06-21T22:29:41.3621452Z         "int": {
2026-06-21T22:29:41.3621566Z           "complete": false,
2026-06-21T22:29:41.3621666Z           "evidence": []
2026-06-21T22:29:41.3621767Z         },
2026-06-21T22:29:41.3621871Z         "unit": {
2026-06-21T22:29:41.3621975Z           "complete": true,
2026-06-21T22:29:41.3622086Z           "evidence": [
2026-06-21T22:29:41.3622186Z             {
2026-06-21T22:29:41.3622329Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3622434Z               "line": 2703
2026-06-21T22:29:41.3622543Z             },
2026-06-21T22:29:41.3622644Z             {
2026-06-21T22:29:41.3622791Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.3622906Z               "line": 2772
2026-06-21T22:29:41.3623007Z             }
2026-06-21T22:29:41.3623116Z           ]
2026-06-21T22:29:41.3623216Z         }
2026-06-21T22:29:41.3623317Z       }
2026-06-21T22:29:41.3623417Z     },
2026-06-21T22:29:41.3623639Z     {
2026-06-21T22:29:41.3623771Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T22:29:41.3624606Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T22:29:41.3624715Z       "requiredStages": [
2026-06-21T22:29:41.3624814Z         "doc",
2026-06-21T22:29:41.3624921Z         "impl",
2026-06-21T22:29:41.3625025Z         "unit"
2026-06-21T22:29:41.3625124Z       ],
2026-06-21T22:29:41.3625230Z       "stages": {
2026-06-21T22:29:41.3625444Z         "doc": {
2026-06-21T22:29:41.3625550Z           "complete": true,
2026-06-21T22:29:41.3625659Z           "evidence": [
2026-06-21T22:29:41.3625759Z             {
2026-06-21T22:29:41.3625889Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3626006Z               "line": 366
2026-06-21T22:29:41.3626131Z             }
2026-06-21T22:29:41.3626232Z           ]
2026-06-21T22:29:41.3626331Z         },
2026-06-21T22:29:41.3626430Z         "impl": {
2026-06-21T22:29:41.3626540Z           "complete": true,
2026-06-21T22:29:41.3626641Z           "evidence": [
2026-06-21T22:29:41.3626735Z             {
2026-06-21T22:29:41.3626884Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.3626993Z               "line": 87
2026-06-21T22:29:41.3627097Z             },
2026-06-21T22:29:41.3627194Z             {
2026-06-21T22:29:41.3627341Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3627446Z               "line": 114
2026-06-21T22:29:41.3627551Z             },
2026-06-21T22:29:41.3627661Z             {
2026-06-21T22:29:41.3627804Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.3627918Z               "line": 55
2026-06-21T22:29:41.3628017Z             },
2026-06-21T22:29:41.3628119Z             {
2026-06-21T22:29:41.3628256Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.3628366Z               "line": 31
2026-06-21T22:29:41.3628472Z             },
2026-06-21T22:29:41.3628571Z             {
2026-06-21T22:29:41.3628707Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.3628813Z               "line": 446
2026-06-21T22:29:41.3628916Z             },
2026-06-21T22:29:41.3629140Z             {
2026-06-21T22:29:41.3629292Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.3629407Z               "line": 95
2026-06-21T22:29:41.3629512Z             },
2026-06-21T22:29:41.3629616Z             {
2026-06-21T22:29:41.3629761Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.3629884Z               "line": 29
2026-06-21T22:29:41.3629988Z             },
2026-06-21T22:29:41.3630090Z             {
2026-06-21T22:29:41.3630236Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.3630342Z               "line": 104
2026-06-21T22:29:41.3630447Z             },
2026-06-21T22:29:41.3630546Z             {
2026-06-21T22:29:41.3630705Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3630813Z               "line": 208
2026-06-21T22:29:41.3630918Z             },
2026-06-21T22:29:41.3631020Z             {
2026-06-21T22:29:41.3631156Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T22:29:41.3631262Z               "line": 28
2026-06-21T22:29:41.3631363Z             },
2026-06-21T22:29:41.3631466Z             {
2026-06-21T22:29:41.3631609Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T22:29:41.3631713Z               "line": 74
2026-06-21T22:29:41.3631826Z             },
2026-06-21T22:29:41.3631926Z             {
2026-06-21T22:29:41.3632070Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.3632174Z               "line": 32
2026-06-21T22:29:41.3632274Z             },
2026-06-21T22:29:41.3632379Z             {
2026-06-21T22:29:41.3632628Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3632728Z               "line": 40
2026-06-21T22:29:41.3632832Z             },
2026-06-21T22:29:41.3632933Z             {
2026-06-21T22:29:41.3633066Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3633180Z               "line": 184
2026-06-21T22:29:41.3633290Z             },
2026-06-21T22:29:41.3633389Z             {
2026-06-21T22:29:41.3633519Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.3633624Z               "line": 61
2026-06-21T22:29:41.3633723Z             },
2026-06-21T22:29:41.3633829Z             {
2026-06-21T22:29:41.3634089Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.3634204Z               "line": 131
2026-06-21T22:29:41.3634303Z             },
2026-06-21T22:29:41.3634407Z             {
2026-06-21T22:29:41.3634546Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.3634655Z               "line": 223
2026-06-21T22:29:41.3634768Z             },
2026-06-21T22:29:41.3634861Z             {
2026-06-21T22:29:41.3634998Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T22:29:41.3635103Z               "line": 37
2026-06-21T22:29:41.3635204Z             },
2026-06-21T22:29:41.3635303Z             {
2026-06-21T22:29:41.3635451Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.3635561Z               "line": 38
2026-06-21T22:29:41.3635656Z             },
2026-06-21T22:29:41.3635761Z             {
2026-06-21T22:29:41.3635895Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.3636009Z               "line": 36
2026-06-21T22:29:41.3636115Z             },
2026-06-21T22:29:41.3636223Z             {
2026-06-21T22:29:41.3636352Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T22:29:41.3636459Z               "line": 40
2026-06-21T22:29:41.3636566Z             }
2026-06-21T22:29:41.3636667Z           ]
2026-06-21T22:29:41.3636774Z         },
2026-06-21T22:29:41.3636867Z         "int": {
2026-06-21T22:29:41.3636985Z           "complete": false,
2026-06-21T22:29:41.3637095Z           "evidence": []
2026-06-21T22:29:41.3637192Z         },
2026-06-21T22:29:41.3637299Z         "unit": {
2026-06-21T22:29:41.3637406Z           "complete": true,
2026-06-21T22:29:41.3637510Z           "evidence": [
2026-06-21T22:29:41.3637610Z             {
2026-06-21T22:29:41.3637754Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.3637859Z               "line": 212
2026-06-21T22:29:41.3637962Z             },
2026-06-21T22:29:41.3638073Z             {
2026-06-21T22:29:41.3638225Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T22:29:41.3638345Z               "line": 136
2026-06-21T22:29:41.3638441Z             },
2026-06-21T22:29:41.3641255Z             {
2026-06-21T22:29:41.3641449Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.3641556Z               "line": 685
2026-06-21T22:29:41.3641679Z             },
2026-06-21T22:29:41.3641779Z             {
2026-06-21T22:29:41.3641933Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.3642036Z               "line": 224
2026-06-21T22:29:41.3642130Z             },
2026-06-21T22:29:41.3642236Z             {
2026-06-21T22:29:41.3642391Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T22:29:41.3642496Z               "line": 206
2026-06-21T22:29:41.3642596Z             },
2026-06-21T22:29:41.3642705Z             {
2026-06-21T22:29:41.3642844Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.3642954Z               "line": 112
2026-06-21T22:29:41.3643063Z             },
2026-06-21T22:29:41.3643164Z             {
2026-06-21T22:29:41.3643311Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T22:29:41.3643416Z               "line": 157
2026-06-21T22:29:41.3643522Z             },
2026-06-21T22:29:41.3643621Z             {
2026-06-21T22:29:41.3643759Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.3644016Z               "line": 215
2026-06-21T22:29:41.3644113Z             },
2026-06-21T22:29:41.3644217Z             {
2026-06-21T22:29:41.3644355Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.3644466Z               "line": 141
2026-06-21T22:29:41.3644569Z             },
2026-06-21T22:29:41.3644673Z             {
2026-06-21T22:29:41.3644812Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T22:29:41.3644919Z               "line": 162
2026-06-21T22:29:41.3645019Z             }
2026-06-21T22:29:41.3645120Z           ]
2026-06-21T22:29:41.3645215Z         }
2026-06-21T22:29:41.3645421Z       }
2026-06-21T22:29:41.3645516Z     },
2026-06-21T22:29:41.3645620Z     {
2026-06-21T22:29:41.3645764Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T22:29:41.3647689Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T22:29:41.3647832Z       "requiredStages": [
2026-06-21T22:29:41.3647932Z         "doc",
2026-06-21T22:29:41.3648038Z         "impl",
2026-06-21T22:29:41.3648156Z         "unit",
2026-06-21T22:29:41.3648261Z         "int"
2026-06-21T22:29:41.3648366Z       ],
2026-06-21T22:29:41.3648466Z       "stages": {
2026-06-21T22:29:41.3648571Z         "doc": {
2026-06-21T22:29:41.3648686Z           "complete": true,
2026-06-21T22:29:41.3648790Z           "evidence": [
2026-06-21T22:29:41.3648910Z             {
2026-06-21T22:29:41.3649124Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.3649235Z               "line": 250
2026-06-21T22:29:41.3649334Z             }
2026-06-21T22:29:41.3649453Z           ]
2026-06-21T22:29:41.3649549Z         },
2026-06-21T22:29:41.3649659Z         "impl": {
2026-06-21T22:29:41.3649766Z           "complete": true,
2026-06-21T22:29:41.3649871Z           "evidence": [
2026-06-21T22:29:41.3649971Z             {
2026-06-21T22:29:41.3650098Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.3650208Z               "line": 135
2026-06-21T22:29:41.3650304Z             },
2026-06-21T22:29:41.3650412Z             {
2026-06-21T22:29:41.3650537Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.3650647Z               "line": 157
2026-06-21T22:29:41.3650751Z             }
2026-06-21T22:29:41.3650847Z           ]
2026-06-21T22:29:41.3650951Z         },
2026-06-21T22:29:41.3651051Z         "int": {
2026-06-21T22:29:41.3651162Z           "complete": true,
2026-06-21T22:29:41.3651266Z           "evidence": [
2026-06-21T22:29:41.3651366Z             {
2026-06-21T22:29:41.3651524Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T22:29:41.3651629Z               "line": 15
2026-06-21T22:29:41.3651733Z             }
2026-06-21T22:29:41.3651825Z           ]
2026-06-21T22:29:41.3651919Z         },
2026-06-21T22:29:41.3652019Z         "unit": {
2026-06-21T22:29:41.3652135Z           "complete": true,
2026-06-21T22:29:41.3652234Z           "evidence": [
2026-06-21T22:29:41.3652334Z             {
2026-06-21T22:29:41.3652469Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T22:29:41.3652573Z               "line": 233
2026-06-21T22:29:41.3652672Z             }
2026-06-21T22:29:41.3652772Z           ]
2026-06-21T22:29:41.3652876Z         }
2026-06-21T22:29:41.3652979Z       }
2026-06-21T22:29:41.3653080Z     },
2026-06-21T22:29:41.3653175Z     {
2026-06-21T22:29:41.3653308Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T22:29:41.3653647Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T22:29:41.3653753Z       "requiredStages": [
2026-06-21T22:29:41.3653863Z         "impl",
2026-06-21T22:29:41.3653966Z         "unit"
2026-06-21T22:29:41.3654063Z       ],
2026-06-21T22:29:41.3654171Z       "stages": {
2026-06-21T22:29:41.3654276Z         "doc": {
2026-06-21T22:29:41.3654397Z           "complete": false,
2026-06-21T22:29:41.3654495Z           "evidence": []
2026-06-21T22:29:41.3654591Z         },
2026-06-21T22:29:41.3654702Z         "impl": {
2026-06-21T22:29:41.3654810Z           "complete": true,
2026-06-21T22:29:41.3654920Z           "evidence": [
2026-06-21T22:29:41.3655115Z             {
2026-06-21T22:29:41.3655262Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.3655367Z               "line": 95
2026-06-21T22:29:41.3655470Z             },
2026-06-21T22:29:41.3655574Z             {
2026-06-21T22:29:41.3655704Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3655832Z               "line": 117
2026-06-21T22:29:41.3655923Z             }
2026-06-21T22:29:41.3656023Z           ]
2026-06-21T22:29:41.3656114Z         },
2026-06-21T22:29:41.3656223Z         "int": {
2026-06-21T22:29:41.3656338Z           "complete": false,
2026-06-21T22:29:41.3656443Z           "evidence": []
2026-06-21T22:29:41.3656542Z         },
2026-06-21T22:29:41.3656649Z         "unit": {
2026-06-21T22:29:41.3656762Z           "complete": true,
2026-06-21T22:29:41.3656867Z           "evidence": [
2026-06-21T22:29:41.3656968Z             {
2026-06-21T22:29:41.3657096Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.3657201Z               "line": 250
2026-06-21T22:29:41.3657311Z             },
2026-06-21T22:29:41.3657410Z             {
2026-06-21T22:29:41.3657545Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.3657649Z               "line": 412
2026-06-21T22:29:41.3657754Z             },
2026-06-21T22:29:41.3657869Z             {
2026-06-21T22:29:41.3658001Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3658110Z               "line": 611
2026-06-21T22:29:41.3658206Z             },
2026-06-21T22:29:41.3658312Z             {
2026-06-21T22:29:41.3658434Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3658540Z               "line": 669
2026-06-21T22:29:41.3658645Z             }
2026-06-21T22:29:41.3658744Z           ]
2026-06-21T22:29:41.3658846Z         }
2026-06-21T22:29:41.3659087Z       }
2026-06-21T22:29:41.3659189Z     },
2026-06-21T22:29:41.3659298Z     {
2026-06-21T22:29:41.3659431Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T22:29:41.3661926Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T22:29:41.3662056Z       "requiredStages": [
2026-06-21T22:29:41.3662160Z         "impl",
2026-06-21T22:29:41.3662284Z         "unit",
2026-06-21T22:29:41.3662380Z         "int"
2026-06-21T22:29:41.3662480Z       ],
2026-06-21T22:29:41.3662584Z       "stages": {
2026-06-21T22:29:41.3662681Z         "doc": {
2026-06-21T22:29:41.3662799Z           "complete": false,
2026-06-21T22:29:41.3662913Z           "evidence": []
2026-06-21T22:29:41.3663020Z         },
2026-06-21T22:29:41.3663246Z         "impl": {
2026-06-21T22:29:41.3663360Z           "complete": true,
2026-06-21T22:29:41.3663464Z           "evidence": [
2026-06-21T22:29:41.3663568Z             {
2026-06-21T22:29:41.3663712Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3663825Z               "line": 925
2026-06-21T22:29:41.3663930Z             },
2026-06-21T22:29:41.3664022Z             {
2026-06-21T22:29:41.3664164Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3664270Z               "line": 994
2026-06-21T22:29:41.3664370Z             }
2026-06-21T22:29:41.3664474Z           ]
2026-06-21T22:29:41.3664675Z         },
2026-06-21T22:29:41.3664789Z         "int": {
2026-06-21T22:29:41.3664894Z           "complete": true,
2026-06-21T22:29:41.3665014Z           "evidence": [
2026-06-21T22:29:41.3665108Z             {
2026-06-21T22:29:41.3665257Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T22:29:41.3665361Z               "line": 187
2026-06-21T22:29:41.3665466Z             },
2026-06-21T22:29:41.3665572Z             {
2026-06-21T22:29:41.3665713Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T22:29:41.3665822Z               "line": 348
2026-06-21T22:29:41.3665923Z             }
2026-06-21T22:29:41.3666030Z           ]
2026-06-21T22:29:41.3666130Z         },
2026-06-21T22:29:41.3666235Z         "unit": {
2026-06-21T22:29:41.3666350Z           "complete": true,
2026-06-21T22:29:41.3666459Z           "evidence": [
2026-06-21T22:29:41.3666560Z             {
2026-06-21T22:29:41.3666706Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3666822Z               "line": 1206
2026-06-21T22:29:41.3666917Z             },
2026-06-21T22:29:41.3667017Z             {
2026-06-21T22:29:41.3667151Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3667255Z               "line": 8116
2026-06-21T22:29:41.3667364Z             }
2026-06-21T22:29:41.3667461Z           ]
2026-06-21T22:29:41.3667556Z         }
2026-06-21T22:29:41.3667661Z       }
2026-06-21T22:29:41.3667761Z     },
2026-06-21T22:29:41.3667857Z     {
2026-06-21T22:29:41.3667980Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T22:29:41.3668191Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T22:29:41.3668290Z       "requiredStages": [
2026-06-21T22:29:41.3668396Z         "impl",
2026-06-21T22:29:41.3668506Z         "unit"
2026-06-21T22:29:41.3668604Z       ],
2026-06-21T22:29:41.3668713Z       "stages": {
2026-06-21T22:29:41.3668809Z         "doc": {
2026-06-21T22:29:41.3668918Z           "complete": false,
2026-06-21T22:29:41.3669095Z           "evidence": []
2026-06-21T22:29:41.3669201Z         },
2026-06-21T22:29:41.3669305Z         "impl": {
2026-06-21T22:29:41.3669406Z           "complete": true,
2026-06-21T22:29:41.3669520Z           "evidence": [
2026-06-21T22:29:41.3669619Z             {
2026-06-21T22:29:41.3669763Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3669872Z               "line": 262
2026-06-21T22:29:41.3669981Z             },
2026-06-21T22:29:41.3670088Z             {
2026-06-21T22:29:41.3670225Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3670335Z               "line": 307
2026-06-21T22:29:41.3670430Z             },
2026-06-21T22:29:41.3670535Z             {
2026-06-21T22:29:41.3670664Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3670774Z               "line": 319
2026-06-21T22:29:41.3670877Z             }
2026-06-21T22:29:41.3670968Z           ]
2026-06-21T22:29:41.3671068Z         },
2026-06-21T22:29:41.3671171Z         "int": {
2026-06-21T22:29:41.3671299Z           "complete": false,
2026-06-21T22:29:41.3671405Z           "evidence": []
2026-06-21T22:29:41.3671509Z         },
2026-06-21T22:29:41.3671618Z         "unit": {
2026-06-21T22:29:41.3671715Z           "complete": true,
2026-06-21T22:29:41.3671828Z           "evidence": [
2026-06-21T22:29:41.3671938Z             {
2026-06-21T22:29:41.3672177Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3672278Z               "line": 455
2026-06-21T22:29:41.3672387Z             },
2026-06-21T22:29:41.3672491Z             {
2026-06-21T22:29:41.3672626Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3672730Z               "line": 499
2026-06-21T22:29:41.3672830Z             }
2026-06-21T22:29:41.3672932Z           ]
2026-06-21T22:29:41.3673035Z         }
2026-06-21T22:29:41.3673135Z       }
2026-06-21T22:29:41.3673232Z     },
2026-06-21T22:29:41.3673336Z     {
2026-06-21T22:29:41.3673445Z       "id": "REQ-HOST-RUN-1",
2026-06-21T22:29:41.3676007Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T22:29:41.3676156Z       "requiredStages": [
2026-06-21T22:29:41.3676264Z         "impl",
2026-06-21T22:29:41.3676363Z         "unit",
2026-06-21T22:29:41.3676473Z         "int"
2026-06-21T22:29:41.3676577Z       ],
2026-06-21T22:29:41.3676699Z       "stages": {
2026-06-21T22:29:41.3676800Z         "doc": {
2026-06-21T22:29:41.3676910Z           "complete": false,
2026-06-21T22:29:41.3677024Z           "evidence": []
2026-06-21T22:29:41.3677120Z         },
2026-06-21T22:29:41.3677225Z         "impl": {
2026-06-21T22:29:41.3677343Z           "complete": true,
2026-06-21T22:29:41.3677459Z           "evidence": [
2026-06-21T22:29:41.3677563Z             {
2026-06-21T22:29:41.3677716Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3677825Z               "line": 30
2026-06-21T22:29:41.3677925Z             },
2026-06-21T22:29:41.3678036Z             {
2026-06-21T22:29:41.3678183Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3678293Z               "line": 76
2026-06-21T22:29:41.3678389Z             },
2026-06-21T22:29:41.3678483Z             {
2026-06-21T22:29:41.3678631Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3678742Z               "line": 181
2026-06-21T22:29:41.3678845Z             },
2026-06-21T22:29:41.3679028Z             {
2026-06-21T22:29:41.3679150Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3679263Z               "line": 1266
2026-06-21T22:29:41.3679360Z             }
2026-06-21T22:29:41.3679469Z           ]
2026-06-21T22:29:41.3679574Z         },
2026-06-21T22:29:41.3679685Z         "int": {
2026-06-21T22:29:41.3679807Z           "complete": true,
2026-06-21T22:29:41.3679912Z           "evidence": [
2026-06-21T22:29:41.3680018Z             {
2026-06-21T22:29:41.3680160Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3680266Z               "line": 285
2026-06-21T22:29:41.3680375Z             }
2026-06-21T22:29:41.3680475Z           ]
2026-06-21T22:29:41.3680581Z         },
2026-06-21T22:29:41.3680685Z         "unit": {
2026-06-21T22:29:41.3680794Z           "complete": true,
2026-06-21T22:29:41.3680901Z           "evidence": [
2026-06-21T22:29:41.3681000Z             {
2026-06-21T22:29:41.3681152Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3681264Z               "line": 229
2026-06-21T22:29:41.3681366Z             },
2026-06-21T22:29:41.3681461Z             {
2026-06-21T22:29:41.3681614Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3681830Z               "line": 296
2026-06-21T22:29:41.3681936Z             },
2026-06-21T22:29:41.3682045Z             {
2026-06-21T22:29:41.3682193Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3682303Z               "line": 419
2026-06-21T22:29:41.3682408Z             }
2026-06-21T22:29:41.3682513Z           ]
2026-06-21T22:29:41.3682613Z         }
2026-06-21T22:29:41.3682722Z       }
2026-06-21T22:29:41.3682818Z     },
2026-06-21T22:29:41.3682913Z     {
2026-06-21T22:29:41.3683028Z       "id": "REQ-HOST-RUN-2",
2026-06-21T22:29:41.3684813Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T22:29:41.3685055Z       "requiredStages": [
2026-06-21T22:29:41.3685166Z         "impl",
2026-06-21T22:29:41.3685270Z         "unit",
2026-06-21T22:29:41.3685375Z         "int"
2026-06-21T22:29:41.3685471Z       ],
2026-06-21T22:29:41.3685580Z       "stages": {
2026-06-21T22:29:41.3685690Z         "doc": {
2026-06-21T22:29:41.3685805Z           "complete": false,
2026-06-21T22:29:41.3685919Z           "evidence": []
2026-06-21T22:29:41.3686024Z         },
2026-06-21T22:29:41.3686129Z         "impl": {
2026-06-21T22:29:41.3686243Z           "complete": true,
2026-06-21T22:29:41.3686349Z           "evidence": [
2026-06-21T22:29:41.3686453Z             {
2026-06-21T22:29:41.3686610Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.3686730Z               "line": 182
2026-06-21T22:29:41.3686824Z             },
2026-06-21T22:29:41.3686933Z             {
2026-06-21T22:29:41.3687062Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.3687170Z               "line": 113
2026-06-21T22:29:41.3687278Z             }
2026-06-21T22:29:41.3687370Z           ]
2026-06-21T22:29:41.3687475Z         },
2026-06-21T22:29:41.3687584Z         "int": {
2026-06-21T22:29:41.3687704Z           "complete": true,
2026-06-21T22:29:41.3687804Z           "evidence": [
2026-06-21T22:29:41.3687913Z             {
2026-06-21T22:29:41.3688057Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3688165Z               "line": 572
2026-06-21T22:29:41.3688267Z             }
2026-06-21T22:29:41.3688372Z           ]
2026-06-21T22:29:41.3688476Z         },
2026-06-21T22:29:41.3688581Z         "unit": {
2026-06-21T22:29:41.3688686Z           "complete": true,
2026-06-21T22:29:41.3688800Z           "evidence": [
2026-06-21T22:29:41.3688906Z             {
2026-06-21T22:29:41.3689138Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T22:29:41.3689245Z               "line": 86
2026-06-21T22:29:41.3689349Z             }
2026-06-21T22:29:41.3689453Z           ]
2026-06-21T22:29:41.3689545Z         }
2026-06-21T22:29:41.3689645Z       }
2026-06-21T22:29:41.3689743Z     },
2026-06-21T22:29:41.3689853Z     {
2026-06-21T22:29:41.3689968Z       "id": "REQ-INFRA-1",
2026-06-21T22:29:41.3690182Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T22:29:41.3690296Z       "requiredStages": [],
2026-06-21T22:29:41.3690401Z       "stages": {
2026-06-21T22:29:41.3690507Z         "doc": {
2026-06-21T22:29:41.3690611Z           "complete": false,
2026-06-21T22:29:41.3690720Z           "evidence": []
2026-06-21T22:29:41.3690811Z         },
2026-06-21T22:29:41.3690912Z         "impl": {
2026-06-21T22:29:41.3691016Z           "complete": false,
2026-06-21T22:29:41.3691126Z           "evidence": []
2026-06-21T22:29:41.3691446Z         },
2026-06-21T22:29:41.3691551Z         "int": {
2026-06-21T22:29:41.3691669Z           "complete": false,
2026-06-21T22:29:41.3691765Z           "evidence": []
2026-06-21T22:29:41.3691871Z         },
2026-06-21T22:29:41.3691974Z         "unit": {
2026-06-21T22:29:41.3692083Z           "complete": false,
2026-06-21T22:29:41.3692193Z           "evidence": []
2026-06-21T22:29:41.3692296Z         }
2026-06-21T22:29:41.3692400Z       }
2026-06-21T22:29:41.3692501Z     },
2026-06-21T22:29:41.3692610Z     {
2026-06-21T22:29:41.3692715Z       "id": "REQ-INST-1",
2026-06-21T22:29:41.3692911Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T22:29:41.3693135Z       "requiredStages": [],
2026-06-21T22:29:41.3693235Z       "stages": {
2026-06-21T22:29:41.3693344Z         "doc": {
2026-06-21T22:29:41.3693455Z           "complete": false,
2026-06-21T22:29:41.3693564Z           "evidence": []
2026-06-21T22:29:41.3693664Z         },
2026-06-21T22:29:41.3693784Z         "impl": {
2026-06-21T22:29:41.3693897Z           "complete": false,
2026-06-21T22:29:41.3693998Z           "evidence": []
2026-06-21T22:29:41.3694103Z         },
2026-06-21T22:29:41.3694208Z         "int": {
2026-06-21T22:29:41.3694323Z           "complete": false,
2026-06-21T22:29:41.3694428Z           "evidence": []
2026-06-21T22:29:41.3694532Z         },
2026-06-21T22:29:41.3694643Z         "unit": {
2026-06-21T22:29:41.3694752Z           "complete": false,
2026-06-21T22:29:41.3694855Z           "evidence": []
2026-06-21T22:29:41.3694960Z         }
2026-06-21T22:29:41.3695060Z       }
2026-06-21T22:29:41.3695158Z     },
2026-06-21T22:29:41.3695262Z     {
2026-06-21T22:29:41.3695378Z       "id": "REQ-INST-10",
2026-06-21T22:29:41.3695620Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T22:29:41.3695735Z       "requiredStages": [
2026-06-21T22:29:41.3695835Z         "impl",
2026-06-21T22:29:41.3695940Z         "unit"
2026-06-21T22:29:41.3696045Z       ],
2026-06-21T22:29:41.3696154Z       "stages": {
2026-06-21T22:29:41.3696259Z         "doc": {
2026-06-21T22:29:41.3696374Z           "complete": false,
2026-06-21T22:29:41.3696488Z           "evidence": []
2026-06-21T22:29:41.3696589Z         },
2026-06-21T22:29:41.3696698Z         "impl": {
2026-06-21T22:29:41.3696813Z           "complete": true,
2026-06-21T22:29:41.3696919Z           "evidence": [
2026-06-21T22:29:41.3697027Z             {
2026-06-21T22:29:41.3697180Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3697290Z               "line": 648
2026-06-21T22:29:41.3697389Z             },
2026-06-21T22:29:41.3697493Z             {
2026-06-21T22:29:41.3697655Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3697763Z               "line": 725
2026-06-21T22:29:41.3697868Z             },
2026-06-21T22:29:41.3697969Z             {
2026-06-21T22:29:41.3698110Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3698216Z               "line": 13
2026-06-21T22:29:41.3698311Z             },
2026-06-21T22:29:41.3698406Z             {
2026-06-21T22:29:41.3698550Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3698655Z               "line": 67
2026-06-21T22:29:41.3698754Z             },
2026-06-21T22:29:41.3698860Z             {
2026-06-21T22:29:41.3699078Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3699185Z               "line": 18
2026-06-21T22:29:41.3699289Z             },
2026-06-21T22:29:41.3699422Z             {
2026-06-21T22:29:41.3699556Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3699666Z               "line": 444
2026-06-21T22:29:41.3699781Z             }
2026-06-21T22:29:41.3699881Z           ]
2026-06-21T22:29:41.3699985Z         },
2026-06-21T22:29:41.3700081Z         "int": {
2026-06-21T22:29:41.3700196Z           "complete": false,
2026-06-21T22:29:41.3700303Z           "evidence": []
2026-06-21T22:29:41.3700403Z         },
2026-06-21T22:29:41.3700609Z         "unit": {
2026-06-21T22:29:41.3700713Z           "complete": true,
2026-06-21T22:29:41.3700824Z           "evidence": [
2026-06-21T22:29:41.3700928Z             {
2026-06-21T22:29:41.3701077Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3701181Z               "line": 932
2026-06-21T22:29:41.3701285Z             },
2026-06-21T22:29:41.3701386Z             {
2026-06-21T22:29:41.3701519Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3701623Z               "line": 1309
2026-06-21T22:29:41.3701725Z             },
2026-06-21T22:29:41.3701829Z             {
2026-06-21T22:29:41.3702078Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3702186Z               "line": 1320
2026-06-21T22:29:41.3702292Z             },
2026-06-21T22:29:41.3702388Z             {
2026-06-21T22:29:41.3702529Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3702628Z               "line": 1336
2026-06-21T22:29:41.3702739Z             },
2026-06-21T22:29:41.3702846Z             {
2026-06-21T22:29:41.3702985Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3703100Z               "line": 1352
2026-06-21T22:29:41.3703199Z             },
2026-06-21T22:29:41.3703304Z             {
2026-06-21T22:29:41.3703438Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3703547Z               "line": 1374
2026-06-21T22:29:41.3703653Z             },
2026-06-21T22:29:41.3703752Z             {
2026-06-21T22:29:41.3703900Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3704015Z               "line": 1679
2026-06-21T22:29:41.3704124Z             },
2026-06-21T22:29:41.3704215Z             {
2026-06-21T22:29:41.3704349Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3704458Z               "line": 130
2026-06-21T22:29:41.3704563Z             },
2026-06-21T22:29:41.3704668Z             {
2026-06-21T22:29:41.3704806Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3704917Z               "line": 167
2026-06-21T22:29:41.3705016Z             },
2026-06-21T22:29:41.3705121Z             {
2026-06-21T22:29:41.3705251Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3705354Z               "line": 175
2026-06-21T22:29:41.3705458Z             },
2026-06-21T22:29:41.3705553Z             {
2026-06-21T22:29:41.3705694Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T22:29:41.3705803Z               "line": 183
2026-06-21T22:29:41.3705904Z             },
2026-06-21T22:29:41.3706009Z             {
2026-06-21T22:29:41.3706147Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3706248Z               "line": 896
2026-06-21T22:29:41.3706352Z             }
2026-06-21T22:29:41.3706456Z           ]
2026-06-21T22:29:41.3706563Z         }
2026-06-21T22:29:41.3706653Z       }
2026-06-21T22:29:41.3706757Z     },
2026-06-21T22:29:41.3706864Z     {
2026-06-21T22:29:41.3706967Z       "id": "REQ-INST-11",
2026-06-21T22:29:41.3707202Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T22:29:41.3707325Z       "requiredStages": [
2026-06-21T22:29:41.3707425Z         "impl",
2026-06-21T22:29:41.3707522Z         "unit"
2026-06-21T22:29:41.3707625Z       ],
2026-06-21T22:29:41.3707721Z       "stages": {
2026-06-21T22:29:41.3707832Z         "doc": {
2026-06-21T22:29:41.3707949Z           "complete": false,
2026-06-21T22:29:41.3708058Z           "evidence": []
2026-06-21T22:29:41.3708159Z         },
2026-06-21T22:29:41.3708257Z         "impl": {
2026-06-21T22:29:41.3708380Z           "complete": true,
2026-06-21T22:29:41.3708485Z           "evidence": [
2026-06-21T22:29:41.3708586Z             {
2026-06-21T22:29:41.3708724Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3708829Z               "line": 514
2026-06-21T22:29:41.3708938Z             },
2026-06-21T22:29:41.3709215Z             {
2026-06-21T22:29:41.3709377Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3709477Z               "line": 297
2026-06-21T22:29:41.3709577Z             },
2026-06-21T22:29:41.3709682Z             {
2026-06-21T22:29:41.3709830Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T22:29:41.3709944Z               "line": 59
2026-06-21T22:29:41.3710041Z             },
2026-06-21T22:29:41.3710144Z             {
2026-06-21T22:29:41.3710273Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3710379Z               "line": 5291
2026-06-21T22:29:41.3710478Z             },
2026-06-21T22:29:41.3710685Z             {
2026-06-21T22:29:41.3710812Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3710915Z               "line": 7137
2026-06-21T22:29:41.3711021Z             }
2026-06-21T22:29:41.3711122Z           ]
2026-06-21T22:29:41.3711225Z         },
2026-06-21T22:29:41.3711327Z         "int": {
2026-06-21T22:29:41.3711446Z           "complete": false,
2026-06-21T22:29:41.3711564Z           "evidence": []
2026-06-21T22:29:41.3711665Z         },
2026-06-21T22:29:41.3711770Z         "unit": {
2026-06-21T22:29:41.3711874Z           "complete": true,
2026-06-21T22:29:41.3711985Z           "evidence": [
2026-06-21T22:29:41.3712084Z             {
2026-06-21T22:29:41.3712232Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3712342Z               "line": 1479
2026-06-21T22:29:41.3712447Z             },
2026-06-21T22:29:41.3712552Z             {
2026-06-21T22:29:41.3712695Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3712809Z               "line": 1512
2026-06-21T22:29:41.3712905Z             },
2026-06-21T22:29:41.3713010Z             {
2026-06-21T22:29:41.3713161Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3713270Z               "line": 527
2026-06-21T22:29:41.3713369Z             },
2026-06-21T22:29:41.3713468Z             {
2026-06-21T22:29:41.3713622Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T22:29:41.3713731Z               "line": 160
2026-06-21T22:29:41.3713835Z             },
2026-06-21T22:29:41.3713941Z             {
2026-06-21T22:29:41.3714073Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T22:29:41.3714189Z               "line": 190
2026-06-21T22:29:41.3714284Z             },
2026-06-21T22:29:41.3714393Z             {
2026-06-21T22:29:41.3714532Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T22:29:41.3714637Z               "line": 225
2026-06-21T22:29:41.3714746Z             },
2026-06-21T22:29:41.3714847Z             {
2026-06-21T22:29:41.3714995Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3715104Z               "line": 7994
2026-06-21T22:29:41.3715205Z             }
2026-06-21T22:29:41.3715308Z           ]
2026-06-21T22:29:41.3715409Z         }
2026-06-21T22:29:41.3715506Z       }
2026-06-21T22:29:41.3715604Z     },
2026-06-21T22:29:41.3715714Z     {
2026-06-21T22:29:41.3715820Z       "id": "REQ-INST-12",
2026-06-21T22:29:41.3716142Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T22:29:41.3716264Z       "requiredStages": [
2026-06-21T22:29:41.3716368Z         "impl",
2026-06-21T22:29:41.3716474Z         "unit"
2026-06-21T22:29:41.3716570Z       ],
2026-06-21T22:29:41.3716679Z       "stages": {
2026-06-21T22:29:41.3716780Z         "doc": {
2026-06-21T22:29:41.3716894Z           "complete": false,
2026-06-21T22:29:41.3716998Z           "evidence": []
2026-06-21T22:29:41.3717104Z         },
2026-06-21T22:29:41.3717218Z         "impl": {
2026-06-21T22:29:41.3717332Z           "complete": true,
2026-06-21T22:29:41.3717433Z           "evidence": [
2026-06-21T22:29:41.3717532Z             {
2026-06-21T22:29:41.3717680Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3717786Z               "line": 566
2026-06-21T22:29:41.3717962Z             },
2026-06-21T22:29:41.3718068Z             {
2026-06-21T22:29:41.3718209Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3718320Z               "line": 659
2026-06-21T22:29:41.3718420Z             },
2026-06-21T22:29:41.3718524Z             {
2026-06-21T22:29:41.3718670Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3718779Z               "line": 739
2026-06-21T22:29:41.3718883Z             },
2026-06-21T22:29:41.3719050Z             {
2026-06-21T22:29:41.3719184Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3719293Z               "line": 96
2026-06-21T22:29:41.3719522Z             },
2026-06-21T22:29:41.3719622Z             {
2026-06-21T22:29:41.3719761Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3719865Z               "line": 269
2026-06-21T22:29:41.3719967Z             },
2026-06-21T22:29:41.3720070Z             {
2026-06-21T22:29:41.3720208Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3720319Z               "line": 148
2026-06-21T22:29:41.3720419Z             }
2026-06-21T22:29:41.3720523Z           ]
2026-06-21T22:29:41.3720625Z         },
2026-06-21T22:29:41.3720724Z         "int": {
2026-06-21T22:29:41.3720843Z           "complete": false,
2026-06-21T22:29:41.3720945Z           "evidence": []
2026-06-21T22:29:41.3721052Z         },
2026-06-21T22:29:41.3721153Z         "unit": {
2026-06-21T22:29:41.3721259Z           "complete": true,
2026-06-21T22:29:41.3721367Z           "evidence": [
2026-06-21T22:29:41.3721471Z             {
2026-06-21T22:29:41.3721625Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3721739Z               "line": 1554
2026-06-21T22:29:41.3721843Z             },
2026-06-21T22:29:41.3721954Z             {
2026-06-21T22:29:41.3722091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3722197Z               "line": 1577
2026-06-21T22:29:41.3722297Z             },
2026-06-21T22:29:41.3722401Z             {
2026-06-21T22:29:41.3722540Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3722654Z               "line": 1614
2026-06-21T22:29:41.3722763Z             },
2026-06-21T22:29:41.3722864Z             {
2026-06-21T22:29:41.3722997Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.3723102Z               "line": 457
2026-06-21T22:29:41.3723208Z             },
2026-06-21T22:29:41.3723311Z             {
2026-06-21T22:29:41.3723455Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3723570Z               "line": 185
2026-06-21T22:29:41.3723673Z             },
2026-06-21T22:29:41.3723773Z             {
2026-06-21T22:29:41.3723915Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3724028Z               "line": 206
2026-06-21T22:29:41.3724129Z             },
2026-06-21T22:29:41.3724235Z             {
2026-06-21T22:29:41.3724376Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3724492Z               "line": 232
2026-06-21T22:29:41.3724596Z             }
2026-06-21T22:29:41.3727186Z           ]
2026-06-21T22:29:41.3727316Z         }
2026-06-21T22:29:41.3727420Z       }
2026-06-21T22:29:41.3727524Z     },
2026-06-21T22:29:41.3727626Z     {
2026-06-21T22:29:41.3727740Z       "id": "REQ-INST-13",
2026-06-21T22:29:41.3727955Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T22:29:41.3728068Z       "requiredStages": [
2026-06-21T22:29:41.3728168Z         "impl",
2026-06-21T22:29:41.3728270Z         "unit"
2026-06-21T22:29:41.3728374Z       ],
2026-06-21T22:29:41.3728493Z       "stages": {
2026-06-21T22:29:41.3728589Z         "doc": {
2026-06-21T22:29:41.3728703Z           "complete": false,
2026-06-21T22:29:41.3728808Z           "evidence": []
2026-06-21T22:29:41.3728904Z         },
2026-06-21T22:29:41.3729088Z         "impl": {
2026-06-21T22:29:41.3729202Z           "complete": true,
2026-06-21T22:29:41.3729495Z           "evidence": [
2026-06-21T22:29:41.3729596Z             {
2026-06-21T22:29:41.3729748Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3729853Z               "line": 100
2026-06-21T22:29:41.3729959Z             },
2026-06-21T22:29:41.3730053Z             {
2026-06-21T22:29:41.3730192Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3730302Z               "line": 171
2026-06-21T22:29:41.3730401Z             }
2026-06-21T22:29:41.3730502Z           ]
2026-06-21T22:29:41.3730602Z         },
2026-06-21T22:29:41.3730702Z         "int": {
2026-06-21T22:29:41.3730812Z           "complete": false,
2026-06-21T22:29:41.3731031Z           "evidence": []
2026-06-21T22:29:41.3731137Z         },
2026-06-21T22:29:41.3731241Z         "unit": {
2026-06-21T22:29:41.3731351Z           "complete": true,
2026-06-21T22:29:41.3731461Z           "evidence": [
2026-06-21T22:29:41.3731565Z             {
2026-06-21T22:29:41.3731732Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3731848Z               "line": 261
2026-06-21T22:29:41.3731955Z             },
2026-06-21T22:29:41.3732055Z             {
2026-06-21T22:29:41.3732194Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T22:29:41.3732299Z               "line": 279
2026-06-21T22:29:41.3732403Z             }
2026-06-21T22:29:41.3732504Z           ]
2026-06-21T22:29:41.3732608Z         }
2026-06-21T22:29:41.3732713Z       }
2026-06-21T22:29:41.3732814Z     },
2026-06-21T22:29:41.3732919Z     {
2026-06-21T22:29:41.3733023Z       "id": "REQ-INST-14",
2026-06-21T22:29:41.3733425Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T22:29:41.3733548Z       "requiredStages": [
2026-06-21T22:29:41.3733643Z         "doc",
2026-06-21T22:29:41.3733749Z         "impl",
2026-06-21T22:29:41.3733848Z         "unit"
2026-06-21T22:29:41.3733948Z       ],
2026-06-21T22:29:41.3734050Z       "stages": {
2026-06-21T22:29:41.3734158Z         "doc": {
2026-06-21T22:29:41.3734271Z           "complete": true,
2026-06-21T22:29:41.3734372Z           "evidence": [
2026-06-21T22:29:41.3734471Z             {
2026-06-21T22:29:41.3734588Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3734694Z               "line": 588
2026-06-21T22:29:41.3734795Z             },
2026-06-21T22:29:41.3734898Z             {
2026-06-21T22:29:41.3735023Z               "path": "docs/STORAGE.md",
2026-06-21T22:29:41.3735133Z               "line": 49
2026-06-21T22:29:41.3735241Z             }
2026-06-21T22:29:41.3735343Z           ]
2026-06-21T22:29:41.3735447Z         },
2026-06-21T22:29:41.3735551Z         "impl": {
2026-06-21T22:29:41.3735672Z           "complete": true,
2026-06-21T22:29:41.3735771Z           "evidence": [
2026-06-21T22:29:41.3735875Z             {
2026-06-21T22:29:41.3736039Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3736158Z               "line": 410
2026-06-21T22:29:41.3736263Z             },
2026-06-21T22:29:41.3736363Z             {
2026-06-21T22:29:41.3736514Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3736616Z               "line": 367
2026-06-21T22:29:41.3736720Z             },
2026-06-21T22:29:41.3736825Z             {
2026-06-21T22:29:41.3736955Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3737063Z               "line": 293
2026-06-21T22:29:41.3737167Z             },
2026-06-21T22:29:41.3737277Z             {
2026-06-21T22:29:41.3737399Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3737508Z               "line": 1577
2026-06-21T22:29:41.3737614Z             }
2026-06-21T22:29:41.3737709Z           ]
2026-06-21T22:29:41.3737803Z         },
2026-06-21T22:29:41.3737910Z         "int": {
2026-06-21T22:29:41.3738029Z           "complete": false,
2026-06-21T22:29:41.3738137Z           "evidence": []
2026-06-21T22:29:41.3738309Z         },
2026-06-21T22:29:41.3738418Z         "unit": {
2026-06-21T22:29:41.3738520Z           "complete": true,
2026-06-21T22:29:41.3738629Z           "evidence": [
2026-06-21T22:29:41.3738728Z             {
2026-06-21T22:29:41.3738887Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3739067Z               "line": 1163
2026-06-21T22:29:41.3739168Z             },
2026-06-21T22:29:41.3739268Z             {
2026-06-21T22:29:41.3739416Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3739522Z               "line": 944
2026-06-21T22:29:41.3739625Z             },
2026-06-21T22:29:41.3739724Z             {
2026-06-21T22:29:41.3739979Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3740084Z               "line": 1205
2026-06-21T22:29:41.3740190Z             },
2026-06-21T22:29:41.3740289Z             {
2026-06-21T22:29:41.3740433Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3740542Z               "line": 659
2026-06-21T22:29:41.3740647Z             },
2026-06-21T22:29:41.3740743Z             {
2026-06-21T22:29:41.3740857Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3740971Z               "line": 8070
2026-06-21T22:29:41.3741063Z             }
2026-06-21T22:29:41.3741167Z           ]
2026-06-21T22:29:41.3741257Z         }
2026-06-21T22:29:41.3741367Z       }
2026-06-21T22:29:41.3741473Z     },
2026-06-21T22:29:41.3741568Z     {
2026-06-21T22:29:41.3741672Z       "id": "REQ-INST-15",
2026-06-21T22:29:41.3742413Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T22:29:41.3742534Z       "requiredStages": [
2026-06-21T22:29:41.3742644Z         "doc",
2026-06-21T22:29:41.3742750Z         "impl",
2026-06-21T22:29:41.3742859Z         "unit"
2026-06-21T22:29:41.3742949Z       ],
2026-06-21T22:29:41.3743059Z       "stages": {
2026-06-21T22:29:41.3743159Z         "doc": {
2026-06-21T22:29:41.3743268Z           "complete": true,
2026-06-21T22:29:41.3743374Z           "evidence": [
2026-06-21T22:29:41.3743479Z             {
2026-06-21T22:29:41.3743675Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T22:29:41.3743779Z               "line": 3
2026-06-21T22:29:41.3743888Z             }
2026-06-21T22:29:41.3743980Z           ]
2026-06-21T22:29:41.3744074Z         },
2026-06-21T22:29:41.3744179Z         "impl": {
2026-06-21T22:29:41.3744290Z           "complete": true,
2026-06-21T22:29:41.3744399Z           "evidence": [
2026-06-21T22:29:41.3744499Z             {
2026-06-21T22:29:41.3744657Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3744766Z               "line": 353
2026-06-21T22:29:41.3744865Z             },
2026-06-21T22:29:41.3744970Z             {
2026-06-21T22:29:41.3745115Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.3745220Z               "line": 60
2026-06-21T22:29:41.3745321Z             },
2026-06-21T22:29:41.3745421Z             {
2026-06-21T22:29:41.3745574Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3745683Z               "line": 368
2026-06-21T22:29:41.3745787Z             },
2026-06-21T22:29:41.3745889Z             {
2026-06-21T22:29:41.3746045Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3746155Z               "line": 417
2026-06-21T22:29:41.3746260Z             },
2026-06-21T22:29:41.3746360Z             {
2026-06-21T22:29:41.3746508Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3746613Z               "line": 19
2026-06-21T22:29:41.3746713Z             },
2026-06-21T22:29:41.3746818Z             {
2026-06-21T22:29:41.3746942Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3747051Z               "line": 70
2026-06-21T22:29:41.3747252Z             },
2026-06-21T22:29:41.3747357Z             {
2026-06-21T22:29:41.3747496Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3747595Z               "line": 96
2026-06-21T22:29:41.3747703Z             },
2026-06-21T22:29:41.3747804Z             {
2026-06-21T22:29:41.3747935Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3748039Z               "line": 121
2026-06-21T22:29:41.3748140Z             },
2026-06-21T22:29:41.3748246Z             {
2026-06-21T22:29:41.3748368Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3748474Z               "line": 172
2026-06-21T22:29:41.3748654Z             },
2026-06-21T22:29:41.3748756Z             {
2026-06-21T22:29:41.3748894Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3749080Z               "line": 178
2026-06-21T22:29:41.3749184Z             },
2026-06-21T22:29:41.3749279Z             {
2026-06-21T22:29:41.3749409Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3749513Z               "line": 1469
2026-06-21T22:29:41.3749613Z             }
2026-06-21T22:29:41.3749719Z           ]
2026-06-21T22:29:41.3749814Z         },
2026-06-21T22:29:41.3749919Z         "int": {
2026-06-21T22:29:41.3750034Z           "complete": false,
2026-06-21T22:29:41.3750143Z           "evidence": []
2026-06-21T22:29:41.3750242Z         },
2026-06-21T22:29:41.3750351Z         "unit": {
2026-06-21T22:29:41.3750460Z           "complete": true,
2026-06-21T22:29:41.3750568Z           "evidence": [
2026-06-21T22:29:41.3750674Z             {
2026-06-21T22:29:41.3750817Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3750935Z               "line": 577
2026-06-21T22:29:41.3751022Z             },
2026-06-21T22:29:41.3751127Z             {
2026-06-21T22:29:41.3751273Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.3751389Z               "line": 638
2026-06-21T22:29:41.3751498Z             },
2026-06-21T22:29:41.3751598Z             {
2026-06-21T22:29:41.3751732Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3751841Z               "line": 213
2026-06-21T22:29:41.3751947Z             },
2026-06-21T22:29:41.3752052Z             {
2026-06-21T22:29:41.3752180Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3752291Z               "line": 249
2026-06-21T22:29:41.3752390Z             },
2026-06-21T22:29:41.3752499Z             {
2026-06-21T22:29:41.3752630Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3752732Z               "line": 262
2026-06-21T22:29:41.3752843Z             },
2026-06-21T22:29:41.3752949Z             {
2026-06-21T22:29:41.3753075Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T22:29:41.3753184Z               "line": 338
2026-06-21T22:29:41.3753291Z             },
2026-06-21T22:29:41.3753390Z             {
2026-06-21T22:29:41.3753523Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.3753639Z               "line": 690
2026-06-21T22:29:41.3753738Z             },
2026-06-21T22:29:41.3753843Z             {
2026-06-21T22:29:41.3753972Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3754086Z               "line": 8007
2026-06-21T22:29:41.3754187Z             },
2026-06-21T22:29:41.3754287Z             {
2026-06-21T22:29:41.3754415Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3754521Z               "line": 9837
2026-06-21T22:29:41.3754630Z             }
2026-06-21T22:29:41.3754730Z           ]
2026-06-21T22:29:41.3754831Z         }
2026-06-21T22:29:41.3754931Z       }
2026-06-21T22:29:41.3755035Z     },
2026-06-21T22:29:41.3755146Z     {
2026-06-21T22:29:41.3755250Z       "id": "REQ-INST-2",
2026-06-21T22:29:41.3755401Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T22:29:41.3755511Z       "requiredStages": [
2026-06-21T22:29:41.3755614Z         "impl",
2026-06-21T22:29:41.3755843Z         "unit"
2026-06-21T22:29:41.3755947Z       ],
2026-06-21T22:29:41.3756056Z       "stages": {
2026-06-21T22:29:41.3756158Z         "doc": {
2026-06-21T22:29:41.3756276Z           "complete": false,
2026-06-21T22:29:41.3756385Z           "evidence": []
2026-06-21T22:29:41.3756487Z         },
2026-06-21T22:29:41.3756591Z         "impl": {
2026-06-21T22:29:41.3756705Z           "complete": true,
2026-06-21T22:29:41.3756820Z           "evidence": [
2026-06-21T22:29:41.3756920Z             {
2026-06-21T22:29:41.3757073Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3757187Z               "line": 108
2026-06-21T22:29:41.3757287Z             },
2026-06-21T22:29:41.3757492Z             {
2026-06-21T22:29:41.3757635Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.3757746Z               "line": 28
2026-06-21T22:29:41.3757845Z             },
2026-06-21T22:29:41.3757946Z             {
2026-06-21T22:29:41.3758071Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.3758178Z               "line": 74
2026-06-21T22:29:41.3758277Z             },
2026-06-21T22:29:41.3758383Z             {
2026-06-21T22:29:41.3758524Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.3758628Z               "line": 96
2026-06-21T22:29:41.3758729Z             },
2026-06-21T22:29:41.3758829Z             {
2026-06-21T22:29:41.3759030Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.3759130Z               "line": 86
2026-06-21T22:29:41.3759233Z             },
2026-06-21T22:29:41.3759340Z             {
2026-06-21T22:29:41.3759468Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T22:29:41.3759592Z               "line": 118
2026-06-21T22:29:41.3759683Z             }
2026-06-21T22:29:41.3759787Z           ]
2026-06-21T22:29:41.3759887Z         },
2026-06-21T22:29:41.3759993Z         "int": {
2026-06-21T22:29:41.3760106Z           "complete": false,
2026-06-21T22:29:41.3760211Z           "evidence": []
2026-06-21T22:29:41.3760308Z         },
2026-06-21T22:29:41.3760412Z         "unit": {
2026-06-21T22:29:41.3760516Z           "complete": true,
2026-06-21T22:29:41.3760623Z           "evidence": [
2026-06-21T22:29:41.3760722Z             {
2026-06-21T22:29:41.3760854Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T22:29:41.3760954Z               "line": 250
2026-06-21T22:29:41.3761058Z             },
2026-06-21T22:29:41.3761157Z             {
2026-06-21T22:29:41.3761301Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.3761401Z               "line": 280
2026-06-21T22:29:41.3761510Z             }
2026-06-21T22:29:41.3761606Z           ]
2026-06-21T22:29:41.3761702Z         }
2026-06-21T22:29:41.3761800Z       }
2026-06-21T22:29:41.3761892Z     },
2026-06-21T22:29:41.3761996Z     {
2026-06-21T22:29:41.3762100Z       "id": "REQ-INST-3",
2026-06-21T22:29:41.3762278Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T22:29:41.3762397Z       "requiredStages": [
2026-06-21T22:29:41.3762497Z         "doc",
2026-06-21T22:29:41.3762602Z         "impl",
2026-06-21T22:29:41.3762707Z         "unit"
2026-06-21T22:29:41.3762807Z       ],
2026-06-21T22:29:41.3762908Z       "stages": {
2026-06-21T22:29:41.3763012Z         "doc": {
2026-06-21T22:29:41.3763127Z           "complete": true,
2026-06-21T22:29:41.3763237Z           "evidence": [
2026-06-21T22:29:41.3763331Z             {
2026-06-21T22:29:41.3763462Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T22:29:41.3763571Z               "line": 3
2026-06-21T22:29:41.3763659Z             }
2026-06-21T22:29:41.3763769Z           ]
2026-06-21T22:29:41.3763879Z         },
2026-06-21T22:29:41.3763983Z         "impl": {
2026-06-21T22:29:41.3764093Z           "complete": true,
2026-06-21T22:29:41.3764189Z           "evidence": [
2026-06-21T22:29:41.3764289Z             {
2026-06-21T22:29:41.3764437Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3764537Z               "line": 60
2026-06-21T22:29:41.3764747Z             },
2026-06-21T22:29:41.3764851Z             {
2026-06-21T22:29:41.3764999Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.3765105Z               "line": 480
2026-06-21T22:29:41.3765214Z             },
2026-06-21T22:29:41.3765314Z             {
2026-06-21T22:29:41.3765463Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3765571Z               "line": 254
2026-06-21T22:29:41.3765671Z             },
2026-06-21T22:29:41.3765769Z             {
2026-06-21T22:29:41.3765914Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3766023Z               "line": 384
2026-06-21T22:29:41.3766226Z             },
2026-06-21T22:29:41.3766321Z             {
2026-06-21T22:29:41.3766470Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3766569Z               "line": 418
2026-06-21T22:29:41.3766674Z             },
2026-06-21T22:29:41.3766770Z             {
2026-06-21T22:29:41.3766922Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T22:29:41.3767033Z               "line": 74
2026-06-21T22:29:41.3767123Z             },
2026-06-21T22:29:41.3767232Z             {
2026-06-21T22:29:41.3767380Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3767489Z               "line": 234
2026-06-21T22:29:41.3767590Z             },
2026-06-21T22:29:41.3767691Z             {
2026-06-21T22:29:41.3767847Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3767953Z               "line": 396
2026-06-21T22:29:41.3768052Z             },
2026-06-21T22:29:41.3768153Z             {
2026-06-21T22:29:41.3768302Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3768405Z               "line": 45
2026-06-21T22:29:41.3768506Z             },
2026-06-21T22:29:41.3768612Z             {
2026-06-21T22:29:41.3768743Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3768857Z               "line": 114
2026-06-21T22:29:41.3769018Z             },
2026-06-21T22:29:41.3769127Z             {
2026-06-21T22:29:41.3769265Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3769375Z               "line": 152
2026-06-21T22:29:41.3769488Z             },
2026-06-21T22:29:41.3769585Z             {
2026-06-21T22:29:41.3769732Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3769837Z               "line": 168
2026-06-21T22:29:41.3769943Z             },
2026-06-21T22:29:41.3770033Z             {
2026-06-21T22:29:41.3770176Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3770276Z               "line": 178
2026-06-21T22:29:41.3770376Z             },
2026-06-21T22:29:41.3770476Z             {
2026-06-21T22:29:41.3770615Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3770724Z               "line": 210
2026-06-21T22:29:41.3770825Z             },
2026-06-21T22:29:41.3770934Z             {
2026-06-21T22:29:41.3771077Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3771179Z               "line": 287
2026-06-21T22:29:41.3771291Z             },
2026-06-21T22:29:41.3771395Z             {
2026-06-21T22:29:41.3771528Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3771636Z               "line": 311
2026-06-21T22:29:41.3771741Z             },
2026-06-21T22:29:41.3771841Z             {
2026-06-21T22:29:41.3771975Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3772079Z               "line": 389
2026-06-21T22:29:41.3772185Z             },
2026-06-21T22:29:41.3772290Z             {
2026-06-21T22:29:41.3772428Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3772538Z               "line": 438
2026-06-21T22:29:41.3772642Z             },
2026-06-21T22:29:41.3772743Z             {
2026-06-21T22:29:41.3772890Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T22:29:41.3773101Z               "line": 37
2026-06-21T22:29:41.3773205Z             },
2026-06-21T22:29:41.3773314Z             {
2026-06-21T22:29:41.3773459Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3773557Z               "line": 62
2026-06-21T22:29:41.3773658Z             },
2026-06-21T22:29:41.3773759Z             {
2026-06-21T22:29:41.3773886Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3773997Z               "line": 279
2026-06-21T22:29:41.3774098Z             },
2026-06-21T22:29:41.3774201Z             {
2026-06-21T22:29:41.3774334Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3774534Z               "line": 1848
2026-06-21T22:29:41.3774638Z             }
2026-06-21T22:29:41.3774745Z           ]
2026-06-21T22:29:41.3774854Z         },
2026-06-21T22:29:41.3774963Z         "int": {
2026-06-21T22:29:41.3775069Z           "complete": false,
2026-06-21T22:29:41.3775169Z           "evidence": []
2026-06-21T22:29:41.3775278Z         },
2026-06-21T22:29:41.3775393Z         "unit": {
2026-06-21T22:29:41.3775498Z           "complete": true,
2026-06-21T22:29:41.3775607Z           "evidence": [
2026-06-21T22:29:41.3775703Z             {
2026-06-21T22:29:41.3775840Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.3775956Z               "line": 360
2026-06-21T22:29:41.3776056Z             },
2026-06-21T22:29:41.3776155Z             {
2026-06-21T22:29:41.3776305Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3776417Z               "line": 837
2026-06-21T22:29:41.3776526Z             },
2026-06-21T22:29:41.3776622Z             {
2026-06-21T22:29:41.3776772Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3776871Z               "line": 894
2026-06-21T22:29:41.3776973Z             },
2026-06-21T22:29:41.3777072Z             {
2026-06-21T22:29:41.3777215Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3777330Z               "line": 889
2026-06-21T22:29:41.3777434Z             },
2026-06-21T22:29:41.3777545Z             {
2026-06-21T22:29:41.3777688Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.3777792Z               "line": 1014
2026-06-21T22:29:41.3777889Z             },
2026-06-21T22:29:41.3777998Z             {
2026-06-21T22:29:41.3778145Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3778246Z               "line": 1264
2026-06-21T22:29:41.3778341Z             },
2026-06-21T22:29:41.3778436Z             {
2026-06-21T22:29:41.3778585Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3778694Z               "line": 1405
2026-06-21T22:29:41.3778799Z             },
2026-06-21T22:29:41.3778904Z             {
2026-06-21T22:29:41.3779109Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3779215Z               "line": 449
2026-06-21T22:29:41.3779318Z             },
2026-06-21T22:29:41.3779426Z             {
2026-06-21T22:29:41.3779574Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3779682Z               "line": 485
2026-06-21T22:29:41.3779787Z             },
2026-06-21T22:29:41.3779878Z             {
2026-06-21T22:29:41.3780020Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3780121Z               "line": 540
2026-06-21T22:29:41.3780231Z             },
2026-06-21T22:29:41.3780335Z             {
2026-06-21T22:29:41.3780474Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3780574Z               "line": 697
2026-06-21T22:29:41.3780674Z             },
2026-06-21T22:29:41.3780794Z             {
2026-06-21T22:29:41.3780931Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3781041Z               "line": 931
2026-06-21T22:29:41.3781141Z             },
2026-06-21T22:29:41.3781241Z             {
2026-06-21T22:29:41.3781371Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3781589Z               "line": 945
2026-06-21T22:29:41.3781695Z             },
2026-06-21T22:29:41.3781795Z             {
2026-06-21T22:29:41.3781946Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3782051Z               "line": 1290
2026-06-21T22:29:41.3782150Z             },
2026-06-21T22:29:41.3782244Z             {
2026-06-21T22:29:41.3782383Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.3782497Z               "line": 609
2026-06-21T22:29:41.3782596Z             },
2026-06-21T22:29:41.3782698Z             {
2026-06-21T22:29:41.3782831Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3783041Z               "line": 8031
2026-06-21T22:29:41.3783145Z             }
2026-06-21T22:29:41.3783249Z           ]
2026-06-21T22:29:41.3783360Z         }
2026-06-21T22:29:41.3783460Z       }
2026-06-21T22:29:41.3783569Z     },
2026-06-21T22:29:41.3783670Z     {
2026-06-21T22:29:41.3783779Z       "id": "REQ-INST-4",
2026-06-21T22:29:41.3783990Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T22:29:41.3784103Z       "requiredStages": [
2026-06-21T22:29:41.3784213Z         "impl",
2026-06-21T22:29:41.3784314Z         "unit"
2026-06-21T22:29:41.3784413Z       ],
2026-06-21T22:29:41.3784528Z       "stages": {
2026-06-21T22:29:41.3784629Z         "doc": {
2026-06-21T22:29:41.3784747Z           "complete": false,
2026-06-21T22:29:41.3784856Z           "evidence": []
2026-06-21T22:29:41.3784961Z         },
2026-06-21T22:29:41.3785066Z         "impl": {
2026-06-21T22:29:41.3785180Z           "complete": true,
2026-06-21T22:29:41.3785286Z           "evidence": [
2026-06-21T22:29:41.3785395Z             {
2026-06-21T22:29:41.3785553Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3785653Z               "line": 385
2026-06-21T22:29:41.3785757Z             },
2026-06-21T22:29:41.3785857Z             {
2026-06-21T22:29:41.3786000Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3786119Z               "line": 202
2026-06-21T22:29:41.3786211Z             },
2026-06-21T22:29:41.3786311Z             {
2026-06-21T22:29:41.3786453Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3786564Z               "line": 234
2026-06-21T22:29:41.3786663Z             },
2026-06-21T22:29:41.3786773Z             {
2026-06-21T22:29:41.3786921Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3787024Z               "line": 274
2026-06-21T22:29:41.3787124Z             }
2026-06-21T22:29:41.3787225Z           ]
2026-06-21T22:29:41.3787332Z         },
2026-06-21T22:29:41.3787431Z         "int": {
2026-06-21T22:29:41.3787543Z           "complete": false,
2026-06-21T22:29:41.3787656Z           "evidence": []
2026-06-21T22:29:41.3787756Z         },
2026-06-21T22:29:41.3787862Z         "unit": {
2026-06-21T22:29:41.3787966Z           "complete": true,
2026-06-21T22:29:41.3788075Z           "evidence": [
2026-06-21T22:29:41.3788182Z             {
2026-06-21T22:29:41.3788318Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3788425Z               "line": 889
2026-06-21T22:29:41.3788525Z             },
2026-06-21T22:29:41.3788629Z             {
2026-06-21T22:29:41.3788768Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3788872Z               "line": 561
2026-06-21T22:29:41.3789054Z             },
2026-06-21T22:29:41.3789145Z             {
2026-06-21T22:29:41.3789291Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3789402Z               "line": 668
2026-06-21T22:29:41.3789506Z             },
2026-06-21T22:29:41.3789606Z             {
2026-06-21T22:29:41.3789746Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3789849Z               "line": 750
2026-06-21T22:29:41.3789953Z             }
2026-06-21T22:29:41.3790058Z           ]
2026-06-21T22:29:41.3790162Z         }
2026-06-21T22:29:41.3790261Z       }
2026-06-21T22:29:41.3790486Z     },
2026-06-21T22:29:41.3790585Z     {
2026-06-21T22:29:41.3790696Z       "id": "REQ-INST-5",
2026-06-21T22:29:41.3790905Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T22:29:41.3791020Z       "requiredStages": [
2026-06-21T22:29:41.3791125Z         "impl",
2026-06-21T22:29:41.3791229Z         "unit",
2026-06-21T22:29:41.3791325Z         "int"
2026-06-21T22:29:41.3791429Z       ],
2026-06-21T22:29:41.3791534Z       "stages": {
2026-06-21T22:29:41.3791645Z         "doc": {
2026-06-21T22:29:41.3791753Z           "complete": false,
2026-06-21T22:29:41.3791858Z           "evidence": []
2026-06-21T22:29:41.3792059Z         },
2026-06-21T22:29:41.3792164Z         "impl": {
2026-06-21T22:29:41.3792274Z           "complete": true,
2026-06-21T22:29:41.3792388Z           "evidence": [
2026-06-21T22:29:41.3792496Z             {
2026-06-21T22:29:41.3792640Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T22:29:41.3792752Z               "line": 85
2026-06-21T22:29:41.3792861Z             },
2026-06-21T22:29:41.3792957Z             {
2026-06-21T22:29:41.3793090Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3793200Z               "line": 68
2026-06-21T22:29:41.3793301Z             },
2026-06-21T22:29:41.3793410Z             {
2026-06-21T22:29:41.3793543Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3793648Z               "line": 99
2026-06-21T22:29:41.3793739Z             },
2026-06-21T22:29:41.3793844Z             {
2026-06-21T22:29:41.3793973Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3794072Z               "line": 183
2026-06-21T22:29:41.3794182Z             },
2026-06-21T22:29:41.3794282Z             {
2026-06-21T22:29:41.3794421Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3794527Z               "line": 314
2026-06-21T22:29:41.3794630Z             }
2026-06-21T22:29:41.3794730Z           ]
2026-06-21T22:29:41.3794827Z         },
2026-06-21T22:29:41.3794931Z         "int": {
2026-06-21T22:29:41.3795036Z           "complete": true,
2026-06-21T22:29:41.3795146Z           "evidence": [
2026-06-21T22:29:41.3795246Z             {
2026-06-21T22:29:41.3795396Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.3795507Z               "line": 156
2026-06-21T22:29:41.3795603Z             },
2026-06-21T22:29:41.3795711Z             {
2026-06-21T22:29:41.3795846Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T22:29:41.3795955Z               "line": 145
2026-06-21T22:29:41.3796054Z             },
2026-06-21T22:29:41.3796161Z             {
2026-06-21T22:29:41.3796303Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3796408Z               "line": 707
2026-06-21T22:29:41.3796513Z             },
2026-06-21T22:29:41.3796613Z             {
2026-06-21T22:29:41.3796752Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3796857Z               "line": 1069
2026-06-21T22:29:41.3796966Z             }
2026-06-21T22:29:41.3797072Z           ]
2026-06-21T22:29:41.3797167Z         },
2026-06-21T22:29:41.3797276Z         "unit": {
2026-06-21T22:29:41.3797386Z           "complete": true,
2026-06-21T22:29:41.3797501Z           "evidence": [
2026-06-21T22:29:41.3797599Z             {
2026-06-21T22:29:41.3797742Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3797860Z               "line": 552
2026-06-21T22:29:41.3797954Z             },
2026-06-21T22:29:41.3798059Z             {
2026-06-21T22:29:41.3798183Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.3798302Z               "line": 595
2026-06-21T22:29:41.3798403Z             },
2026-06-21T22:29:41.3798503Z             {
2026-06-21T22:29:41.3798645Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.3798756Z               "line": 219
2026-06-21T22:29:41.3798860Z             }
2026-06-21T22:29:41.3799103Z           ]
2026-06-21T22:29:41.3799208Z         }
2026-06-21T22:29:41.3799309Z       }
2026-06-21T22:29:41.3799414Z     },
2026-06-21T22:29:41.3799513Z     {
2026-06-21T22:29:41.3799624Z       "id": "REQ-INST-6",
2026-06-21T22:29:41.3799828Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T22:29:41.3799939Z       "requiredStages": [
2026-06-21T22:29:41.3800044Z         "impl",
2026-06-21T22:29:41.3800143Z         "unit",
2026-06-21T22:29:41.3800249Z         "int"
2026-06-21T22:29:41.3800354Z       ],
2026-06-21T22:29:41.3800456Z       "stages": {
2026-06-21T22:29:41.3800566Z         "doc": {
2026-06-21T22:29:41.3800671Z           "complete": true,
2026-06-21T22:29:41.3800893Z           "evidence": [
2026-06-21T22:29:41.3800979Z             {
2026-06-21T22:29:41.3801116Z               "path": "docs/DEFERRED.md",
2026-06-21T22:29:41.3801222Z               "line": 13
2026-06-21T22:29:41.3801322Z             }
2026-06-21T22:29:41.3801426Z           ]
2026-06-21T22:29:41.3801537Z         },
2026-06-21T22:29:41.3801642Z         "impl": {
2026-06-21T22:29:41.3801741Z           "complete": true,
2026-06-21T22:29:41.3801842Z           "evidence": [
2026-06-21T22:29:41.3801947Z             {
2026-06-21T22:29:41.3802099Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.3802205Z               "line": 391
2026-06-21T22:29:41.3802309Z             },
2026-06-21T22:29:41.3802414Z             {
2026-06-21T22:29:41.3802549Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T22:29:41.3802656Z               "line": 27
2026-06-21T22:29:41.3805185Z             },
2026-06-21T22:29:41.3805319Z             {
2026-06-21T22:29:41.3805496Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T22:29:41.3805601Z               "line": 73
2026-06-21T22:29:41.3805706Z             },
2026-06-21T22:29:41.3805806Z             {
2026-06-21T22:29:41.3805966Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T22:29:41.3806086Z               "line": 182
2026-06-21T22:29:41.3806186Z             },
2026-06-21T22:29:41.3806290Z             {
2026-06-21T22:29:41.3806440Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3806543Z               "line": 426
2026-06-21T22:29:41.3806644Z             },
2026-06-21T22:29:41.3806754Z             {
2026-06-21T22:29:41.3806896Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T22:29:41.3807002Z               "line": 31
2026-06-21T22:29:41.3807102Z             },
2026-06-21T22:29:41.3807197Z             {
2026-06-21T22:29:41.3807336Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.3807440Z               "line": 202
2026-06-21T22:29:41.3807545Z             },
2026-06-21T22:29:41.3807647Z             {
2026-06-21T22:29:41.3807774Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.3807883Z               "line": 83
2026-06-21T22:29:41.3807980Z             },
2026-06-21T22:29:41.3808083Z             {
2026-06-21T22:29:41.3808216Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3808316Z               "line": 1849
2026-06-21T22:29:41.3808424Z             },
2026-06-21T22:29:41.3808519Z             {
2026-06-21T22:29:41.3808653Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3808748Z               "line": 179
2026-06-21T22:29:41.3808857Z             },
2026-06-21T22:29:41.3809044Z             {
2026-06-21T22:29:41.3809172Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3809273Z               "line": 215
2026-06-21T22:29:41.3809373Z             }
2026-06-21T22:29:41.3809486Z           ]
2026-06-21T22:29:41.3809593Z         },
2026-06-21T22:29:41.3809687Z         "int": {
2026-06-21T22:29:41.3809811Z           "complete": true,
2026-06-21T22:29:41.3809917Z           "evidence": [
2026-06-21T22:29:41.3810011Z             {
2026-06-21T22:29:41.3810160Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3810256Z               "line": 721
2026-06-21T22:29:41.3810484Z             },
2026-06-21T22:29:41.3810575Z             {
2026-06-21T22:29:41.3810722Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3810823Z               "line": 1114
2026-06-21T22:29:41.3810928Z             },
2026-06-21T22:29:41.3811026Z             {
2026-06-21T22:29:41.3811169Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.3811264Z               "line": 726
2026-06-21T22:29:41.3811362Z             }
2026-06-21T22:29:41.3811463Z           ]
2026-06-21T22:29:41.3811563Z         },
2026-06-21T22:29:41.3811667Z         "unit": {
2026-06-21T22:29:41.3811767Z           "complete": true,
2026-06-21T22:29:41.3811982Z           "evidence": [
2026-06-21T22:29:41.3812082Z             {
2026-06-21T22:29:41.3812225Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.3812334Z               "line": 661
2026-06-21T22:29:41.3812436Z             },
2026-06-21T22:29:41.3812536Z             {
2026-06-21T22:29:41.3812683Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.3812794Z               "line": 899
2026-06-21T22:29:41.3812888Z             },
2026-06-21T22:29:41.3812998Z             {
2026-06-21T22:29:41.3813133Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T22:29:41.3813245Z               "line": 66
2026-06-21T22:29:41.3813342Z             },
2026-06-21T22:29:41.3813433Z             {
2026-06-21T22:29:41.3813560Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.3813664Z               "line": 297
2026-06-21T22:29:41.3813765Z             },
2026-06-21T22:29:41.3813867Z             {
2026-06-21T22:29:41.3814005Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.3814111Z               "line": 203
2026-06-21T22:29:41.3814205Z             }
2026-06-21T22:29:41.3814305Z           ]
2026-06-21T22:29:41.3814407Z         }
2026-06-21T22:29:41.3814511Z       }
2026-06-21T22:29:41.3814615Z     },
2026-06-21T22:29:41.3814717Z     {
2026-06-21T22:29:41.3814835Z       "id": "REQ-INST-7",
2026-06-21T22:29:41.3814993Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T22:29:41.3815107Z       "requiredStages": [
2026-06-21T22:29:41.3815211Z         "impl",
2026-06-21T22:29:41.3815312Z         "unit",
2026-06-21T22:29:41.3815422Z         "int"
2026-06-21T22:29:41.3815521Z       ],
2026-06-21T22:29:41.3815632Z       "stages": {
2026-06-21T22:29:41.3815736Z         "doc": {
2026-06-21T22:29:41.3815850Z           "complete": false,
2026-06-21T22:29:41.3815961Z           "evidence": []
2026-06-21T22:29:41.3816070Z         },
2026-06-21T22:29:41.3816175Z         "impl": {
2026-06-21T22:29:41.3816276Z           "complete": true,
2026-06-21T22:29:41.3816389Z           "evidence": [
2026-06-21T22:29:41.3816489Z             {
2026-06-21T22:29:41.3816637Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.3816737Z               "line": 436
2026-06-21T22:29:41.3816846Z             },
2026-06-21T22:29:41.3816952Z             {
2026-06-21T22:29:41.3817099Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3817204Z               "line": 27
2026-06-21T22:29:41.3817300Z             },
2026-06-21T22:29:41.3817404Z             {
2026-06-21T22:29:41.3817547Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3817652Z               "line": 207
2026-06-21T22:29:41.3817757Z             },
2026-06-21T22:29:41.3817858Z             {
2026-06-21T22:29:41.3817986Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3818091Z               "line": 344
2026-06-21T22:29:41.3818202Z             },
2026-06-21T22:29:41.3818306Z             {
2026-06-21T22:29:41.3818453Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T22:29:41.3818569Z               "line": 59
2026-06-21T22:29:41.3818667Z             },
2026-06-21T22:29:41.3818772Z             {
2026-06-21T22:29:41.3818914Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3819218Z               "line": 41
2026-06-21T22:29:41.3819313Z             },
2026-06-21T22:29:41.3819412Z             {
2026-06-21T22:29:41.3819571Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3819680Z               "line": 27
2026-06-21T22:29:41.3819780Z             },
2026-06-21T22:29:41.3819886Z             {
2026-06-21T22:29:41.3820032Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3820139Z               "line": 119
2026-06-21T22:29:41.3820243Z             },
2026-06-21T22:29:41.3820347Z             {
2026-06-21T22:29:41.3820619Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3820725Z               "line": 134
2026-06-21T22:29:41.3820825Z             },
2026-06-21T22:29:41.3820929Z             {
2026-06-21T22:29:41.3821059Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T22:29:41.3821164Z               "line": 139
2026-06-21T22:29:41.3821268Z             }
2026-06-21T22:29:41.3821369Z           ]
2026-06-21T22:29:41.3821465Z         },
2026-06-21T22:29:41.3821554Z         "int": {
2026-06-21T22:29:41.3821686Z           "complete": true,
2026-06-21T22:29:41.3821810Z           "evidence": [
2026-06-21T22:29:41.3821908Z             {
2026-06-21T22:29:41.3822052Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T22:29:41.3822157Z               "line": 145
2026-06-21T22:29:41.3822265Z             },
2026-06-21T22:29:41.3822395Z             {
2026-06-21T22:29:41.3822552Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3822662Z               "line": 665
2026-06-21T22:29:41.3822815Z             },
2026-06-21T22:29:41.3822909Z             {
2026-06-21T22:29:41.3823049Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3823153Z               "line": 964
2026-06-21T22:29:41.3823253Z             }
2026-06-21T22:29:41.3823359Z           ]
2026-06-21T22:29:41.3823471Z         },
2026-06-21T22:29:41.3823572Z         "unit": {
2026-06-21T22:29:41.3823688Z           "complete": true,
2026-06-21T22:29:41.3823786Z           "evidence": [
2026-06-21T22:29:41.3823887Z             {
2026-06-21T22:29:41.3824031Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3824134Z               "line": 1134
2026-06-21T22:29:41.3824243Z             },
2026-06-21T22:29:41.3824339Z             {
2026-06-21T22:29:41.3824494Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.3824599Z               "line": 1521
2026-06-21T22:29:41.3824690Z             },
2026-06-21T22:29:41.3824799Z             {
2026-06-21T22:29:41.3824948Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T22:29:41.3825053Z               "line": 84
2026-06-21T22:29:41.3825156Z             },
2026-06-21T22:29:41.3825248Z             {
2026-06-21T22:29:41.3825382Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3825485Z               "line": 812
2026-06-21T22:29:41.3825582Z             },
2026-06-21T22:29:41.3825686Z             {
2026-06-21T22:29:41.3825829Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3825940Z               "line": 823
2026-06-21T22:29:41.3826044Z             },
2026-06-21T22:29:41.3826144Z             {
2026-06-21T22:29:41.3826278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3826387Z               "line": 838
2026-06-21T22:29:41.3826493Z             },
2026-06-21T22:29:41.3826584Z             {
2026-06-21T22:29:41.3826725Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3826846Z               "line": 166
2026-06-21T22:29:41.3826945Z             },
2026-06-21T22:29:41.3827049Z             {
2026-06-21T22:29:41.3827197Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3827306Z               "line": 181
2026-06-21T22:29:41.3827406Z             },
2026-06-21T22:29:41.3827607Z             {
2026-06-21T22:29:41.3827749Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.3827851Z               "line": 214
2026-06-21T22:29:41.3827960Z             }
2026-06-21T22:29:41.3828064Z           ]
2026-06-21T22:29:41.3828166Z         }
2026-06-21T22:29:41.3828270Z       }
2026-06-21T22:29:41.3828374Z     },
2026-06-21T22:29:41.3828471Z     {
2026-06-21T22:29:41.3828579Z       "id": "REQ-INST-8",
2026-06-21T22:29:41.3828757Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T22:29:41.3828870Z       "requiredStages": [
2026-06-21T22:29:41.3829042Z         "impl",
2026-06-21T22:29:41.3829251Z         "unit",
2026-06-21T22:29:41.3829355Z         "int"
2026-06-21T22:29:41.3829460Z       ],
2026-06-21T22:29:41.3829563Z       "stages": {
2026-06-21T22:29:41.3829667Z         "doc": {
2026-06-21T22:29:41.3829783Z           "complete": false,
2026-06-21T22:29:41.3829887Z           "evidence": []
2026-06-21T22:29:41.3829987Z         },
2026-06-21T22:29:41.3830083Z         "impl": {
2026-06-21T22:29:41.3830192Z           "complete": true,
2026-06-21T22:29:41.3830297Z           "evidence": [
2026-06-21T22:29:41.3830403Z             {
2026-06-21T22:29:41.3830540Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3830646Z               "line": 113
2026-06-21T22:29:41.3830746Z             },
2026-06-21T22:29:41.3830846Z             {
2026-06-21T22:29:41.3830979Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3831084Z               "line": 399
2026-06-21T22:29:41.3831184Z             },
2026-06-21T22:29:41.3831285Z             {
2026-06-21T22:29:41.3831418Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.3831528Z               "line": 439
2026-06-21T22:29:41.3831629Z             },
2026-06-21T22:29:41.3831733Z             {
2026-06-21T22:29:41.3831866Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.3831973Z               "line": 62
2026-06-21T22:29:41.3832085Z             }
2026-06-21T22:29:41.3832184Z           ]
2026-06-21T22:29:41.3832285Z         },
2026-06-21T22:29:41.3832388Z         "int": {
2026-06-21T22:29:41.3832496Z           "complete": true,
2026-06-21T22:29:41.3832602Z           "evidence": [
2026-06-21T22:29:41.3832702Z             {
2026-06-21T22:29:41.3832854Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.3832960Z               "line": 415
2026-06-21T22:29:41.3833060Z             },
2026-06-21T22:29:41.3833159Z             {
2026-06-21T22:29:41.3833308Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.3833417Z               "line": 1028
2026-06-21T22:29:41.3833522Z             }
2026-06-21T22:29:41.3833628Z           ]
2026-06-21T22:29:41.3833723Z         },
2026-06-21T22:29:41.3833832Z         "unit": {
2026-06-21T22:29:41.3833947Z           "complete": true,
2026-06-21T22:29:41.3834056Z           "evidence": [
2026-06-21T22:29:41.3834171Z             {
2026-06-21T22:29:41.3834309Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3834418Z               "line": 366
2026-06-21T22:29:41.3834515Z             },
2026-06-21T22:29:41.3834620Z             {
2026-06-21T22:29:41.3834761Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3834865Z               "line": 633
2026-06-21T22:29:41.3834969Z             },
2026-06-21T22:29:41.3835078Z             {
2026-06-21T22:29:41.3835217Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.3835317Z               "line": 116
2026-06-21T22:29:41.3835411Z             },
2026-06-21T22:29:41.3835513Z             {
2026-06-21T22:29:41.3835655Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.3835759Z               "line": 160
2026-06-21T22:29:41.3835861Z             }
2026-06-21T22:29:41.3835966Z           ]
2026-06-21T22:29:41.3836060Z         }
2026-06-21T22:29:41.3836166Z       }
2026-06-21T22:29:41.3836375Z     },
2026-06-21T22:29:41.3836471Z     {
2026-06-21T22:29:41.3836575Z       "id": "REQ-INST-9",
2026-06-21T22:29:41.3836781Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T22:29:41.3836890Z       "requiredStages": [
2026-06-21T22:29:41.3836995Z         "impl",
2026-06-21T22:29:41.3837101Z         "unit"
2026-06-21T22:29:41.3837205Z       ],
2026-06-21T22:29:41.3837300Z       "stages": {
2026-06-21T22:29:41.3837401Z         "doc": {
2026-06-21T22:29:41.3837519Z           "complete": false,
2026-06-21T22:29:41.3837619Z           "evidence": []
2026-06-21T22:29:41.3837719Z         },
2026-06-21T22:29:41.3837825Z         "impl": {
2026-06-21T22:29:41.3838014Z           "complete": true,
2026-06-21T22:29:41.3838120Z           "evidence": [
2026-06-21T22:29:41.3838219Z             {
2026-06-21T22:29:41.3838368Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3838477Z               "line": 449
2026-06-21T22:29:41.3838576Z             }
2026-06-21T22:29:41.3838682Z           ]
2026-06-21T22:29:41.3838777Z         },
2026-06-21T22:29:41.3838886Z         "int": {
2026-06-21T22:29:41.3839078Z           "complete": false,
2026-06-21T22:29:41.3839178Z           "evidence": []
2026-06-21T22:29:41.3839278Z         },
2026-06-21T22:29:41.3839374Z         "unit": {
2026-06-21T22:29:41.3839492Z           "complete": true,
2026-06-21T22:29:41.3839597Z           "evidence": [
2026-06-21T22:29:41.3839694Z             {
2026-06-21T22:29:41.3839830Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3839940Z               "line": 1397
2026-06-21T22:29:41.3840048Z             },
2026-06-21T22:29:41.3840152Z             {
2026-06-21T22:29:41.3840305Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3840410Z               "line": 1406
2026-06-21T22:29:41.3840514Z             },
2026-06-21T22:29:41.3840615Z             {
2026-06-21T22:29:41.3840757Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3840861Z               "line": 1422
2026-06-21T22:29:41.3840963Z             },
2026-06-21T22:29:41.3841063Z             {
2026-06-21T22:29:41.3841201Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3841311Z               "line": 1434
2026-06-21T22:29:41.3841410Z             },
2026-06-21T22:29:41.3841511Z             {
2026-06-21T22:29:41.3841654Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.3841763Z               "line": 1454
2026-06-21T22:29:41.3841864Z             }
2026-06-21T22:29:41.3841955Z           ]
2026-06-21T22:29:41.3842064Z         }
2026-06-21T22:29:41.3842165Z       }
2026-06-21T22:29:41.3842260Z     },
2026-06-21T22:29:41.3842359Z     {
2026-06-21T22:29:41.3842470Z       "id": "REQ-INSTALL-1",
2026-06-21T22:29:41.3842697Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T22:29:41.3842807Z       "requiredStages": [
2026-06-21T22:29:41.3842920Z         "doc",
2026-06-21T22:29:41.3843024Z         "impl",
2026-06-21T22:29:41.3843114Z         "int"
2026-06-21T22:29:41.3843215Z       ],
2026-06-21T22:29:41.3843315Z       "stages": {
2026-06-21T22:29:41.3843419Z         "doc": {
2026-06-21T22:29:41.3843535Z           "complete": true,
2026-06-21T22:29:41.3843644Z           "evidence": [
2026-06-21T22:29:41.3843743Z             {
2026-06-21T22:29:41.3843849Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3843954Z               "line": 754
2026-06-21T22:29:41.3844053Z             }
2026-06-21T22:29:41.3844159Z           ]
2026-06-21T22:29:41.3844259Z         },
2026-06-21T22:29:41.3844368Z         "impl": {
2026-06-21T22:29:41.3844484Z           "complete": true,
2026-06-21T22:29:41.3844588Z           "evidence": [
2026-06-21T22:29:41.3844688Z             {
2026-06-21T22:29:41.3844817Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3844926Z               "line": 57
2026-06-21T22:29:41.3845022Z             },
2026-06-21T22:29:41.3845231Z             {
2026-06-21T22:29:41.3845359Z               "path": "installer/install.sh",
2026-06-21T22:29:41.3845469Z               "line": 52
2026-06-21T22:29:41.3845567Z             }
2026-06-21T22:29:41.3845666Z           ]
2026-06-21T22:29:41.3845772Z         },
2026-06-21T22:29:41.3845872Z         "int": {
2026-06-21T22:29:41.3845981Z           "complete": true,
2026-06-21T22:29:41.3846092Z           "evidence": [
2026-06-21T22:29:41.3846197Z             {
2026-06-21T22:29:41.3846344Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T22:29:41.3846454Z               "line": 21
2026-06-21T22:29:41.3846558Z             }
2026-06-21T22:29:41.3846754Z           ]
2026-06-21T22:29:41.3846859Z         },
2026-06-21T22:29:41.3846964Z         "unit": {
2026-06-21T22:29:41.3847074Z           "complete": false,
2026-06-21T22:29:41.3847179Z           "evidence": []
2026-06-21T22:29:41.3847279Z         }
2026-06-21T22:29:41.3847380Z       }
2026-06-21T22:29:41.3847478Z     },
2026-06-21T22:29:41.3847594Z     {
2026-06-21T22:29:41.3847709Z       "id": "REQ-INSTALL-10",
2026-06-21T22:29:41.3849180Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T22:29:41.3849300Z       "requiredStages": [
2026-06-21T22:29:41.3849414Z         "impl",
2026-06-21T22:29:41.3849518Z         "unit"
2026-06-21T22:29:41.3849629Z       ],
2026-06-21T22:29:41.3849729Z       "stages": {
2026-06-21T22:29:41.3849824Z         "doc": {
2026-06-21T22:29:41.3849925Z           "complete": false,
2026-06-21T22:29:41.3850038Z           "evidence": []
2026-06-21T22:29:41.3850129Z         },
2026-06-21T22:29:41.3850235Z         "impl": {
2026-06-21T22:29:41.3850347Z           "complete": true,
2026-06-21T22:29:41.3850456Z           "evidence": [
2026-06-21T22:29:41.3850562Z             {
2026-06-21T22:29:41.3850693Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3850807Z               "line": 191
2026-06-21T22:29:41.3850903Z             }
2026-06-21T22:29:41.3851007Z           ]
2026-06-21T22:29:41.3851102Z         },
2026-06-21T22:29:41.3851209Z         "int": {
2026-06-21T22:29:41.3851318Z           "complete": false,
2026-06-21T22:29:41.3851422Z           "evidence": []
2026-06-21T22:29:41.3851528Z         },
2026-06-21T22:29:41.3851628Z         "unit": {
2026-06-21T22:29:41.3851732Z           "complete": true,
2026-06-21T22:29:41.3851838Z           "evidence": [
2026-06-21T22:29:41.3851947Z             {
2026-06-21T22:29:41.3852100Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T22:29:41.3852205Z               "line": 211
2026-06-21T22:29:41.3852309Z             }
2026-06-21T22:29:41.3852400Z           ]
2026-06-21T22:29:41.3852515Z         }
2026-06-21T22:29:41.3852605Z       }
2026-06-21T22:29:41.3852710Z     },
2026-06-21T22:29:41.3852816Z     {
2026-06-21T22:29:41.3852929Z       "id": "REQ-INSTALL-11",
2026-06-21T22:29:41.3854753Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T22:29:41.3854886Z       "requiredStages": [
2026-06-21T22:29:41.3854986Z         "doc",
2026-06-21T22:29:41.3855096Z         "impl",
2026-06-21T22:29:41.3855321Z         "unit"
2026-06-21T22:29:41.3855425Z       ],
2026-06-21T22:29:41.3855530Z       "stages": {
2026-06-21T22:29:41.3855635Z         "doc": {
2026-06-21T22:29:41.3855749Z           "complete": true,
2026-06-21T22:29:41.3855852Z           "evidence": [
2026-06-21T22:29:41.3855952Z             {
2026-06-21T22:29:41.3856066Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3856174Z               "line": 138
2026-06-21T22:29:41.3856275Z             },
2026-06-21T22:29:41.3856375Z             {
2026-06-21T22:29:41.3856498Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.3856604Z               "line": 82
2026-06-21T22:29:41.3856709Z             }
2026-06-21T22:29:41.3856919Z           ]
2026-06-21T22:29:41.3857024Z         },
2026-06-21T22:29:41.3857128Z         "impl": {
2026-06-21T22:29:41.3857234Z           "complete": true,
2026-06-21T22:29:41.3857338Z           "evidence": [
2026-06-21T22:29:41.3857429Z             {
2026-06-21T22:29:41.3857577Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.3857691Z               "line": 223
2026-06-21T22:29:41.3857795Z             },
2026-06-21T22:29:41.3857897Z             {
2026-06-21T22:29:41.3858043Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3858149Z               "line": 99
2026-06-21T22:29:41.3858255Z             },
2026-06-21T22:29:41.3858358Z             {
2026-06-21T22:29:41.3858503Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.3858602Z               "line": 117
2026-06-21T22:29:41.3858696Z             },
2026-06-21T22:29:41.3858796Z             {
2026-06-21T22:29:41.3859034Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T22:29:41.3859149Z               "line": 332
2026-06-21T22:29:41.3859254Z             },
2026-06-21T22:29:41.3859358Z             {
2026-06-21T22:29:41.3859502Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.3859607Z               "line": 88
2026-06-21T22:29:41.3859701Z             },
2026-06-21T22:29:41.3859812Z             {
2026-06-21T22:29:41.3859945Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.3860050Z               "line": 104
2026-06-21T22:29:41.3860151Z             },
2026-06-21T22:29:41.3860259Z             {
2026-06-21T22:29:41.3860398Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3860513Z               "line": 297
2026-06-21T22:29:41.3860612Z             },
2026-06-21T22:29:41.3860718Z             {
2026-06-21T22:29:41.3860866Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3860974Z               "line": 332
2026-06-21T22:29:41.3861084Z             },
2026-06-21T22:29:41.3861188Z             {
2026-06-21T22:29:41.3861324Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3861430Z               "line": 523
2026-06-21T22:29:41.3861531Z             },
2026-06-21T22:29:41.3861634Z             {
2026-06-21T22:29:41.3861774Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3861892Z               "line": 546
2026-06-21T22:29:41.3861991Z             },
2026-06-21T22:29:41.3862093Z             {
2026-06-21T22:29:41.3862239Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3862346Z               "line": 561
2026-06-21T22:29:41.3862441Z             },
2026-06-21T22:29:41.3862545Z             {
2026-06-21T22:29:41.3862675Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.3862784Z               "line": 492
2026-06-21T22:29:41.3862883Z             }
2026-06-21T22:29:41.3862994Z           ]
2026-06-21T22:29:41.3863094Z         },
2026-06-21T22:29:41.3863203Z         "int": {
2026-06-21T22:29:41.3863314Z           "complete": false,
2026-06-21T22:29:41.3863427Z           "evidence": []
2026-06-21T22:29:41.3863537Z         },
2026-06-21T22:29:41.3863643Z         "unit": {
2026-06-21T22:29:41.3863761Z           "complete": true,
2026-06-21T22:29:41.3863865Z           "evidence": [
2026-06-21T22:29:41.3864083Z             {
2026-06-21T22:29:41.3864224Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3864331Z               "line": 799
2026-06-21T22:29:41.3864439Z             },
2026-06-21T22:29:41.3864544Z             {
2026-06-21T22:29:41.3864693Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3864797Z               "line": 811
2026-06-21T22:29:41.3864907Z             },
2026-06-21T22:29:41.3865002Z             {
2026-06-21T22:29:41.3865150Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.3865261Z               "line": 820
2026-06-21T22:29:41.3865355Z             }
2026-06-21T22:29:41.3865556Z           ]
2026-06-21T22:29:41.3865656Z         }
2026-06-21T22:29:41.3865760Z       }
2026-06-21T22:29:41.3865857Z     },
2026-06-21T22:29:41.3865961Z     {
2026-06-21T22:29:41.3866085Z       "id": "REQ-INSTALL-12",
2026-06-21T22:29:41.3868733Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T22:29:41.3868889Z       "requiredStages": [
2026-06-21T22:29:41.3869077Z         "doc",
2026-06-21T22:29:41.3869181Z         "impl",
2026-06-21T22:29:41.3869284Z         "unit",
2026-06-21T22:29:41.3869404Z         "int"
2026-06-21T22:29:41.3869510Z       ],
2026-06-21T22:29:41.3869618Z       "stages": {
2026-06-21T22:29:41.3869719Z         "doc": {
2026-06-21T22:29:41.3869843Z           "complete": true,
2026-06-21T22:29:41.3869947Z           "evidence": [
2026-06-21T22:29:41.3870053Z             {
2026-06-21T22:29:41.3870172Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3870280Z               "line": 185
2026-06-21T22:29:41.3870382Z             }
2026-06-21T22:29:41.3870482Z           ]
2026-06-21T22:29:41.3870581Z         },
2026-06-21T22:29:41.3870688Z         "impl": {
2026-06-21T22:29:41.3870801Z           "complete": true,
2026-06-21T22:29:41.3870915Z           "evidence": [
2026-06-21T22:29:41.3871012Z             {
2026-06-21T22:29:41.3871162Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3871269Z               "line": 27
2026-06-21T22:29:41.3871374Z             },
2026-06-21T22:29:41.3871473Z             {
2026-06-21T22:29:41.3871620Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3871725Z               "line": 223
2026-06-21T22:29:41.3871822Z             },
2026-06-21T22:29:41.3871927Z             {
2026-06-21T22:29:41.3872057Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3872165Z               "line": 5677
2026-06-21T22:29:41.3872266Z             }
2026-06-21T22:29:41.3872371Z           ]
2026-06-21T22:29:41.3872471Z         },
2026-06-21T22:29:41.3872576Z         "int": {
2026-06-21T22:29:41.3872696Z           "complete": true,
2026-06-21T22:29:41.3872800Z           "evidence": [
2026-06-21T22:29:41.3872901Z             {
2026-06-21T22:29:41.3873053Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T22:29:41.3873157Z               "line": 19
2026-06-21T22:29:41.3873254Z             }
2026-06-21T22:29:41.3873349Z           ]
2026-06-21T22:29:41.3873453Z         },
2026-06-21T22:29:41.3873555Z         "unit": {
2026-06-21T22:29:41.3873673Z           "complete": true,
2026-06-21T22:29:41.3873874Z           "evidence": [
2026-06-21T22:29:41.3873979Z             {
2026-06-21T22:29:41.3874126Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3874232Z               "line": 395
2026-06-21T22:29:41.3874335Z             },
2026-06-21T22:29:41.3874430Z             {
2026-06-21T22:29:41.3874563Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3874671Z               "line": 421
2026-06-21T22:29:41.3874775Z             },
2026-06-21T22:29:41.3874876Z             {
2026-06-21T22:29:41.3875023Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3875229Z               "line": 440
2026-06-21T22:29:41.3875324Z             },
2026-06-21T22:29:41.3875428Z             {
2026-06-21T22:29:41.3875577Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.3875686Z               "line": 475
2026-06-21T22:29:41.3875777Z             },
2026-06-21T22:29:41.3875882Z             {
2026-06-21T22:29:41.3876025Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3876131Z               "line": 8665
2026-06-21T22:29:41.3876225Z             }
2026-06-21T22:29:41.3876320Z           ]
2026-06-21T22:29:41.3876426Z         }
2026-06-21T22:29:41.3876521Z       }
2026-06-21T22:29:41.3876621Z     },
2026-06-21T22:29:41.3876727Z     {
2026-06-21T22:29:41.3876841Z       "id": "REQ-INSTALL-2",
2026-06-21T22:29:41.3877001Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T22:29:41.3877106Z       "requiredStages": [
2026-06-21T22:29:41.3877214Z         "doc"
2026-06-21T22:29:41.3877304Z       ],
2026-06-21T22:29:41.3877404Z       "stages": {
2026-06-21T22:29:41.3877524Z         "doc": {
2026-06-21T22:29:41.3877633Z           "complete": true,
2026-06-21T22:29:41.3877734Z           "evidence": [
2026-06-21T22:29:41.3877829Z             {
2026-06-21T22:29:41.3877948Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3878049Z               "line": 755
2026-06-21T22:29:41.3878163Z             }
2026-06-21T22:29:41.3878262Z           ]
2026-06-21T22:29:41.3878364Z         },
2026-06-21T22:29:41.3878468Z         "impl": {
2026-06-21T22:29:41.3878572Z           "complete": false,
2026-06-21T22:29:41.3878678Z           "evidence": []
2026-06-21T22:29:41.3878778Z         },
2026-06-21T22:29:41.3878882Z         "int": {
2026-06-21T22:29:41.3879064Z           "complete": false,
2026-06-21T22:29:41.3879168Z           "evidence": []
2026-06-21T22:29:41.3879264Z         },
2026-06-21T22:29:41.3879370Z         "unit": {
2026-06-21T22:29:41.3879488Z           "complete": false,
2026-06-21T22:29:41.3879589Z           "evidence": []
2026-06-21T22:29:41.3879704Z         }
2026-06-21T22:29:41.3879797Z       }
2026-06-21T22:29:41.3879897Z     },
2026-06-21T22:29:41.3880002Z     {
2026-06-21T22:29:41.3880112Z       "id": "REQ-INSTALL-3",
2026-06-21T22:29:41.3880269Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T22:29:41.3880375Z       "requiredStages": [
2026-06-21T22:29:41.3880488Z         "impl",
2026-06-21T22:29:41.3880579Z         "int"
2026-06-21T22:29:41.3880670Z       ],
2026-06-21T22:29:41.3880779Z       "stages": {
2026-06-21T22:29:41.3880880Z         "doc": {
2026-06-21T22:29:41.3880999Z           "complete": false,
2026-06-21T22:29:41.3881104Z           "evidence": []
2026-06-21T22:29:41.3881209Z         },
2026-06-21T22:29:41.3881324Z         "impl": {
2026-06-21T22:29:41.3881433Z           "complete": true,
2026-06-21T22:29:41.3881543Z           "evidence": [
2026-06-21T22:29:41.3881643Z             {
2026-06-21T22:29:41.3881776Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3881872Z               "line": 100
2026-06-21T22:29:41.3881986Z             },
2026-06-21T22:29:41.3882089Z             {
2026-06-21T22:29:41.3882218Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3882322Z               "line": 111
2026-06-21T22:29:41.3882426Z             },
2026-06-21T22:29:41.3882531Z             {
2026-06-21T22:29:41.3882783Z               "path": "installer/install.sh",
2026-06-21T22:29:41.3882894Z               "line": 79
2026-06-21T22:29:41.3882998Z             }
2026-06-21T22:29:41.3883083Z           ]
2026-06-21T22:29:41.3883189Z         },
2026-06-21T22:29:41.3883279Z         "int": {
2026-06-21T22:29:41.3883383Z           "complete": true,
2026-06-21T22:29:41.3883481Z           "evidence": [
2026-06-21T22:29:41.3883589Z             {
2026-06-21T22:29:41.3883737Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T22:29:41.3883847Z               "line": 167
2026-06-21T22:29:41.3883952Z             }
2026-06-21T22:29:41.3884051Z           ]
2026-06-21T22:29:41.3884261Z         },
2026-06-21T22:29:41.3884361Z         "unit": {
2026-06-21T22:29:41.3884477Z           "complete": false,
2026-06-21T22:29:41.3884581Z           "evidence": []
2026-06-21T22:29:41.3884681Z         }
2026-06-21T22:29:41.3884778Z       }
2026-06-21T22:29:41.3884877Z     },
2026-06-21T22:29:41.3887406Z     {
2026-06-21T22:29:41.3887561Z       "id": "REQ-INSTALL-4",
2026-06-21T22:29:41.3888241Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T22:29:41.3888361Z       "requiredStages": [
2026-06-21T22:29:41.3888469Z         "impl",
2026-06-21T22:29:41.3888575Z         "unit"
2026-06-21T22:29:41.3888675Z       ],
2026-06-21T22:29:41.3888784Z       "stages": {
2026-06-21T22:29:41.3888885Z         "doc": {
2026-06-21T22:29:41.3889071Z           "complete": false,
2026-06-21T22:29:41.3889185Z           "evidence": []
2026-06-21T22:29:41.3889287Z         },
2026-06-21T22:29:41.3889395Z         "impl": {
2026-06-21T22:29:41.3889500Z           "complete": true,
2026-06-21T22:29:41.3889606Z           "evidence": [
2026-06-21T22:29:41.3889704Z             {
2026-06-21T22:29:41.3889873Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.3889986Z               "line": 165
2026-06-21T22:29:41.3890091Z             },
2026-06-21T22:29:41.3890192Z             {
2026-06-21T22:29:41.3890338Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3890452Z               "line": 29
2026-06-21T22:29:41.3890553Z             },
2026-06-21T22:29:41.3890653Z             {
2026-06-21T22:29:41.3890805Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3890911Z               "line": 288
2026-06-21T22:29:41.3891015Z             },
2026-06-21T22:29:41.3891110Z             {
2026-06-21T22:29:41.3891259Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3891377Z               "line": 356
2026-06-21T22:29:41.3891473Z             },
2026-06-21T22:29:41.3891578Z             {
2026-06-21T22:29:41.3891711Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3891817Z               "line": 386
2026-06-21T22:29:41.3891916Z             },
2026-06-21T22:29:41.3892031Z             {
2026-06-21T22:29:41.3892175Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3892274Z               "line": 434
2026-06-21T22:29:41.3892379Z             },
2026-06-21T22:29:41.3892476Z             {
2026-06-21T22:29:41.3892603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3892711Z               "line": 5396
2026-06-21T22:29:41.3892816Z             }
2026-06-21T22:29:41.3892919Z           ]
2026-06-21T22:29:41.3893024Z         },
2026-06-21T22:29:41.3893134Z         "int": {
2026-06-21T22:29:41.3893244Z           "complete": false,
2026-06-21T22:29:41.3893343Z           "evidence": []
2026-06-21T22:29:41.3893449Z         },
2026-06-21T22:29:41.3893553Z         "unit": {
2026-06-21T22:29:41.3893667Z           "complete": true,
2026-06-21T22:29:41.3893773Z           "evidence": [
2026-06-21T22:29:41.3893873Z             {
2026-06-21T22:29:41.3894031Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.3894307Z               "line": 375
2026-06-21T22:29:41.3894398Z             },
2026-06-21T22:29:41.3894502Z             {
2026-06-21T22:29:41.3894655Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3894760Z               "line": 808
2026-06-21T22:29:41.3894865Z             },
2026-06-21T22:29:41.3894965Z             {
2026-06-21T22:29:41.3895113Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3895208Z               "line": 849
2026-06-21T22:29:41.3895314Z             },
2026-06-21T22:29:41.3895418Z             {
2026-06-21T22:29:41.3895559Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3895763Z               "line": 869
2026-06-21T22:29:41.3895867Z             },
2026-06-21T22:29:41.3895973Z             {
2026-06-21T22:29:41.3896097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3896210Z               "line": 8403
2026-06-21T22:29:41.3896316Z             }
2026-06-21T22:29:41.3896421Z           ]
2026-06-21T22:29:41.3896520Z         }
2026-06-21T22:29:41.3896617Z       }
2026-06-21T22:29:41.3896721Z     },
2026-06-21T22:29:41.3896815Z     {
2026-06-21T22:29:41.3896936Z       "id": "REQ-INSTALL-5",
2026-06-21T22:29:41.3897445Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T22:29:41.3897561Z       "requiredStages": [
2026-06-21T22:29:41.3897675Z         "impl",
2026-06-21T22:29:41.3897774Z         "int"
2026-06-21T22:29:41.3897876Z       ],
2026-06-21T22:29:41.3897985Z       "stages": {
2026-06-21T22:29:41.3898093Z         "doc": {
2026-06-21T22:29:41.3898207Z           "complete": false,
2026-06-21T22:29:41.3898316Z           "evidence": []
2026-06-21T22:29:41.3898424Z         },
2026-06-21T22:29:41.3898525Z         "impl": {
2026-06-21T22:29:41.3898636Z           "complete": true,
2026-06-21T22:29:41.3898739Z           "evidence": [
2026-06-21T22:29:41.3898849Z             {
2026-06-21T22:29:41.3899058Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3899164Z               "line": 5
2026-06-21T22:29:41.3899269Z             },
2026-06-21T22:29:41.3899378Z             {
2026-06-21T22:29:41.3899508Z               "path": "installer/install.sh",
2026-06-21T22:29:41.3899607Z               "line": 6
2026-06-21T22:29:41.3899712Z             }
2026-06-21T22:29:41.3899818Z           ]
2026-06-21T22:29:41.3899907Z         },
2026-06-21T22:29:41.3900012Z         "int": {
2026-06-21T22:29:41.3900123Z           "complete": true,
2026-06-21T22:29:41.3900227Z           "evidence": [
2026-06-21T22:29:41.3900331Z             {
2026-06-21T22:29:41.3900481Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T22:29:41.3900584Z               "line": 22
2026-06-21T22:29:41.3900690Z             }
2026-06-21T22:29:41.3900791Z           ]
2026-06-21T22:29:41.3900889Z         },
2026-06-21T22:29:41.3900989Z         "unit": {
2026-06-21T22:29:41.3901099Z           "complete": false,
2026-06-21T22:29:41.3901213Z           "evidence": []
2026-06-21T22:29:41.3901308Z         }
2026-06-21T22:29:41.3901394Z       }
2026-06-21T22:29:41.3901495Z     },
2026-06-21T22:29:41.3901594Z     {
2026-06-21T22:29:41.3901709Z       "id": "REQ-INSTALL-6",
2026-06-21T22:29:41.3902973Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T22:29:41.3903097Z       "requiredStages": [
2026-06-21T22:29:41.3903205Z         "impl",
2026-06-21T22:29:41.3903310Z         "unit"
2026-06-21T22:29:41.3903414Z       ],
2026-06-21T22:29:41.3903518Z       "stages": {
2026-06-21T22:29:41.3903622Z         "doc": {
2026-06-21T22:29:41.3903860Z           "complete": false,
2026-06-21T22:29:41.3903961Z           "evidence": []
2026-06-21T22:29:41.3904057Z         },
2026-06-21T22:29:41.3904147Z         "impl": {
2026-06-21T22:29:41.3904261Z           "complete": true,
2026-06-21T22:29:41.3904371Z           "evidence": [
2026-06-21T22:29:41.3904471Z             {
2026-06-21T22:29:41.3904625Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3904734Z               "line": 61
2026-06-21T22:29:41.3904828Z             },
2026-06-21T22:29:41.3904920Z             {
2026-06-21T22:29:41.3905062Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.3905264Z               "line": 641
2026-06-21T22:29:41.3905368Z             },
2026-06-21T22:29:41.3905477Z             {
2026-06-21T22:29:41.3905626Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3905739Z               "line": 191
2026-06-21T22:29:41.3905841Z             },
2026-06-21T22:29:41.3905941Z             {
2026-06-21T22:29:41.3906086Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3906201Z               "line": 276
2026-06-21T22:29:41.3906309Z             },
2026-06-21T22:29:41.3906408Z             {
2026-06-21T22:29:41.3906533Z               "path": "crates/spt/src/main.rs",
2026-06-21T22:29:41.3906643Z               "line": 43
2026-06-21T22:29:41.3906751Z             },
2026-06-21T22:29:41.3906853Z             {
2026-06-21T22:29:41.3906981Z               "path": "installer/install.sh",
2026-06-21T22:29:41.3907090Z               "line": 104
2026-06-21T22:29:41.3907186Z             }
2026-06-21T22:29:41.3907291Z           ]
2026-06-21T22:29:41.3907385Z         },
2026-06-21T22:29:41.3907492Z         "int": {
2026-06-21T22:29:41.3907596Z           "complete": false,
2026-06-21T22:29:41.3907705Z           "evidence": []
2026-06-21T22:29:41.3907811Z         },
2026-06-21T22:29:41.3907911Z         "unit": {
2026-06-21T22:29:41.3908034Z           "complete": true,
2026-06-21T22:29:41.3908140Z           "evidence": [
2026-06-21T22:29:41.3908240Z             {
2026-06-21T22:29:41.3908378Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T22:29:41.3908489Z               "line": 894
2026-06-21T22:29:41.3908592Z             }
2026-06-21T22:29:41.3908691Z           ]
2026-06-21T22:29:41.3908791Z         }
2026-06-21T22:29:41.3908886Z       }
2026-06-21T22:29:41.3909076Z     },
2026-06-21T22:29:41.3909176Z     {
2026-06-21T22:29:41.3909280Z       "id": "REQ-INSTALL-7",
2026-06-21T22:29:41.3910472Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T22:29:41.3910596Z       "requiredStages": [
2026-06-21T22:29:41.3910697Z         "impl"
2026-06-21T22:29:41.3910801Z       ],
2026-06-21T22:29:41.3910906Z       "stages": {
2026-06-21T22:29:41.3911003Z         "doc": {
2026-06-21T22:29:41.3911116Z           "complete": false,
2026-06-21T22:29:41.3911235Z           "evidence": []
2026-06-21T22:29:41.3911327Z         },
2026-06-21T22:29:41.3911436Z         "impl": {
2026-06-21T22:29:41.3911535Z           "complete": true,
2026-06-21T22:29:41.3911644Z           "evidence": [
2026-06-21T22:29:41.3911741Z             {
2026-06-21T22:29:41.3911873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3911978Z               "line": 3920
2026-06-21T22:29:41.3912074Z             },
2026-06-21T22:29:41.3912197Z             {
2026-06-21T22:29:41.3912327Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3912436Z               "line": 157
2026-06-21T22:29:41.3912531Z             }
2026-06-21T22:29:41.3912632Z           ]
2026-06-21T22:29:41.3912731Z         },
2026-06-21T22:29:41.3912836Z         "int": {
2026-06-21T22:29:41.3913056Z           "complete": false,
2026-06-21T22:29:41.3913161Z           "evidence": []
2026-06-21T22:29:41.3913257Z         },
2026-06-21T22:29:41.3913361Z         "unit": {
2026-06-21T22:29:41.3913470Z           "complete": false,
2026-06-21T22:29:41.3913582Z           "evidence": []
2026-06-21T22:29:41.3913680Z         }
2026-06-21T22:29:41.3913779Z       }
2026-06-21T22:29:41.3913870Z     },
2026-06-21T22:29:41.3913974Z     {
2026-06-21T22:29:41.3914092Z       "id": "REQ-INSTALL-8",
2026-06-21T22:29:41.3915190Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T22:29:41.3915403Z       "requiredStages": [
2026-06-21T22:29:41.3915519Z         "impl"
2026-06-21T22:29:41.3915613Z       ],
2026-06-21T22:29:41.3915722Z       "stages": {
2026-06-21T22:29:41.3915824Z         "doc": {
2026-06-21T22:29:41.3915932Z           "complete": false,
2026-06-21T22:29:41.3916042Z           "evidence": []
2026-06-21T22:29:41.3916149Z         },
2026-06-21T22:29:41.3916251Z         "impl": {
2026-06-21T22:29:41.3916357Z           "complete": true,
2026-06-21T22:29:41.3916463Z           "evidence": [
2026-06-21T22:29:41.3916557Z             {
2026-06-21T22:29:41.3916699Z               "path": "installer/install.ps1",
2026-06-21T22:29:41.3916795Z               "line": 184
2026-06-21T22:29:41.3916897Z             },
2026-06-21T22:29:41.3916996Z             {
2026-06-21T22:29:41.3917121Z               "path": "installer/install.sh",
2026-06-21T22:29:41.3917231Z               "line": 121
2026-06-21T22:29:41.3917321Z             }
2026-06-21T22:29:41.3917422Z           ]
2026-06-21T22:29:41.3917522Z         },
2026-06-21T22:29:41.3917635Z         "int": {
2026-06-21T22:29:41.3917742Z           "complete": false,
2026-06-21T22:29:41.3917851Z           "evidence": []
2026-06-21T22:29:41.3917955Z         },
2026-06-21T22:29:41.3918052Z         "unit": {
2026-06-21T22:29:41.3918151Z           "complete": false,
2026-06-21T22:29:41.3918261Z           "evidence": []
2026-06-21T22:29:41.3918362Z         }
2026-06-21T22:29:41.3918457Z       }
2026-06-21T22:29:41.3918556Z     },
2026-06-21T22:29:41.3918657Z     {
2026-06-21T22:29:41.3918762Z       "id": "REQ-INSTALL-9",
2026-06-21T22:29:41.3920094Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T22:29:41.3920217Z       "requiredStages": [
2026-06-21T22:29:41.3920328Z         "doc",
2026-06-21T22:29:41.3920432Z         "impl",
2026-06-21T22:29:41.3920531Z         "unit"
2026-06-21T22:29:41.3920633Z       ],
2026-06-21T22:29:41.3920736Z       "stages": {
2026-06-21T22:29:41.3920832Z         "doc": {
2026-06-21T22:29:41.3920948Z           "complete": true,
2026-06-21T22:29:41.3921047Z           "evidence": [
2026-06-21T22:29:41.3921146Z             {
2026-06-21T22:29:41.3921262Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3921371Z               "line": 771
2026-06-21T22:29:41.3921471Z             }
2026-06-21T22:29:41.3921577Z           ]
2026-06-21T22:29:41.3921681Z         },
2026-06-21T22:29:41.3921800Z         "impl": {
2026-06-21T22:29:41.3921897Z           "complete": true,
2026-06-21T22:29:41.3922001Z           "evidence": [
2026-06-21T22:29:41.3922104Z             {
2026-06-21T22:29:41.3922228Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3922334Z               "line": 2535
2026-06-21T22:29:41.3922548Z             },
2026-06-21T22:29:41.3922649Z             {
2026-06-21T22:29:41.3922781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3922887Z               "line": 2559
2026-06-21T22:29:41.3922992Z             }
2026-06-21T22:29:41.3923096Z           ]
2026-06-21T22:29:41.3923197Z         },
2026-06-21T22:29:41.3923306Z         "int": {
2026-06-21T22:29:41.3923420Z           "complete": false,
2026-06-21T22:29:41.3923531Z           "evidence": []
2026-06-21T22:29:41.3923620Z         },
2026-06-21T22:29:41.3923725Z         "unit": {
2026-06-21T22:29:41.3923836Z           "complete": true,
2026-06-21T22:29:41.3923944Z           "evidence": [
2026-06-21T22:29:41.3924137Z             {
2026-06-21T22:29:41.3924268Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3924377Z               "line": 7591
2026-06-21T22:29:41.3924473Z             },
2026-06-21T22:29:41.3924567Z             {
2026-06-21T22:29:41.3924690Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3924815Z               "line": 8433
2026-06-21T22:29:41.3924914Z             }
2026-06-21T22:29:41.3925004Z           ]
2026-06-21T22:29:41.3925105Z         }
2026-06-21T22:29:41.3925201Z       }
2026-06-21T22:29:41.3925300Z     },
2026-06-21T22:29:41.3925396Z     {
2026-06-21T22:29:41.3925506Z       "id": "REQ-KICK-1",
2026-06-21T22:29:41.3927997Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T22:29:41.3928148Z       "requiredStages": [
2026-06-21T22:29:41.3928254Z         "doc",
2026-06-21T22:29:41.3928363Z         "impl",
2026-06-21T22:29:41.3928458Z         "unit",
2026-06-21T22:29:41.3928564Z         "int"
2026-06-21T22:29:41.3928659Z       ],
2026-06-21T22:29:41.3928764Z       "stages": {
2026-06-21T22:29:41.3928868Z         "doc": {
2026-06-21T22:29:41.3929045Z           "complete": true,
2026-06-21T22:29:41.3929150Z           "evidence": [
2026-06-21T22:29:41.3929275Z             {
2026-06-21T22:29:41.3929398Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3929503Z               "line": 342
2026-06-21T22:29:41.3929604Z             }
2026-06-21T22:29:41.3929703Z           ]
2026-06-21T22:29:41.3929806Z         },
2026-06-21T22:29:41.3929912Z         "impl": {
2026-06-21T22:29:41.3930038Z           "complete": true,
2026-06-21T22:29:41.3930147Z           "evidence": [
2026-06-21T22:29:41.3930238Z             {
2026-06-21T22:29:41.3930391Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.3930495Z               "line": 41
2026-06-21T22:29:41.3930602Z             },
2026-06-21T22:29:41.3930706Z             {
2026-06-21T22:29:41.3930830Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.3930935Z               "line": 701
2026-06-21T22:29:41.3931035Z             }
2026-06-21T22:29:41.3931135Z           ]
2026-06-21T22:29:41.3931235Z         },
2026-06-21T22:29:41.3931340Z         "int": {
2026-06-21T22:29:41.3931469Z           "complete": true,
2026-06-21T22:29:41.3931560Z           "evidence": [
2026-06-21T22:29:41.3931655Z             {
2026-06-21T22:29:41.3931799Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.3931907Z               "line": 913
2026-06-21T22:29:41.3932008Z             }
2026-06-21T22:29:41.3932250Z           ]
2026-06-21T22:29:41.3932346Z         },
2026-06-21T22:29:41.3932448Z         "unit": {
2026-06-21T22:29:41.3932565Z           "complete": true,
2026-06-21T22:29:41.3932669Z           "evidence": [
2026-06-21T22:29:41.3932774Z             {
2026-06-21T22:29:41.3932922Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.3933036Z               "line": 205
2026-06-21T22:29:41.3933138Z             }
2026-06-21T22:29:41.3933237Z           ]
2026-06-21T22:29:41.3933341Z         }
2026-06-21T22:29:41.3933438Z       }
2026-06-21T22:29:41.3933543Z     },
2026-06-21T22:29:41.3933637Z     {
2026-06-21T22:29:41.3933748Z       "id": "REQ-MANIFEST-1",
2026-06-21T22:29:41.3934057Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T22:29:41.3934166Z       "requiredStages": [
2026-06-21T22:29:41.3934276Z         "doc",
2026-06-21T22:29:41.3934372Z         "impl",
2026-06-21T22:29:41.3934476Z         "unit"
2026-06-21T22:29:41.3934590Z       ],
2026-06-21T22:29:41.3934692Z       "stages": {
2026-06-21T22:29:41.3934796Z         "doc": {
2026-06-21T22:29:41.3934905Z           "complete": true,
2026-06-21T22:29:41.3935009Z           "evidence": [
2026-06-21T22:29:41.3935113Z             {
2026-06-21T22:29:41.3935231Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.3935341Z               "line": 19
2026-06-21T22:29:41.3935433Z             }
2026-06-21T22:29:41.3935536Z           ]
2026-06-21T22:29:41.3935632Z         },
2026-06-21T22:29:41.3935742Z         "impl": {
2026-06-21T22:29:41.3935841Z           "complete": true,
2026-06-21T22:29:41.3935956Z           "evidence": [
2026-06-21T22:29:41.3936066Z             {
2026-06-21T22:29:41.3936218Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3936324Z               "line": 18
2026-06-21T22:29:41.3936424Z             }
2026-06-21T22:29:41.3936528Z           ]
2026-06-21T22:29:41.3936620Z         },
2026-06-21T22:29:41.3936728Z         "int": {
2026-06-21T22:29:41.3936848Z           "complete": false,
2026-06-21T22:29:41.3936954Z           "evidence": []
2026-06-21T22:29:41.3937062Z         },
2026-06-21T22:29:41.3937157Z         "unit": {
2026-06-21T22:29:41.3937264Z           "complete": true,
2026-06-21T22:29:41.3937371Z           "evidence": [
2026-06-21T22:29:41.3937477Z             {
2026-06-21T22:29:41.3937621Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3937734Z               "line": 1029
2026-06-21T22:29:41.3937838Z             },
2026-06-21T22:29:41.3937943Z             {
2026-06-21T22:29:41.3938084Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3938208Z               "line": 1325
2026-06-21T22:29:41.3938309Z             },
2026-06-21T22:29:41.3938403Z             {
2026-06-21T22:29:41.3938548Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3938652Z               "line": 1337
2026-06-21T22:29:41.3938756Z             },
2026-06-21T22:29:41.3938862Z             {
2026-06-21T22:29:41.3939080Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3939196Z               "line": 1348
2026-06-21T22:29:41.3939295Z             },
2026-06-21T22:29:41.3939405Z             {
2026-06-21T22:29:41.3939539Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3939643Z               "line": 1365
2026-06-21T22:29:41.3939748Z             },
2026-06-21T22:29:41.3939849Z             {
2026-06-21T22:29:41.3939996Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3940107Z               "line": 1379
2026-06-21T22:29:41.3940211Z             },
2026-06-21T22:29:41.3940315Z             {
2026-06-21T22:29:41.3940458Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3940575Z               "line": 1495
2026-06-21T22:29:41.3940674Z             },
2026-06-21T22:29:41.3940780Z             {
2026-06-21T22:29:41.3940927Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3941119Z               "line": 1510
2026-06-21T22:29:41.3941224Z             },
2026-06-21T22:29:41.3941327Z             {
2026-06-21T22:29:41.3941476Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3941581Z               "line": 1621
2026-06-21T22:29:41.3941690Z             },
2026-06-21T22:29:41.3941795Z             {
2026-06-21T22:29:41.3941938Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3942054Z               "line": 1632
2026-06-21T22:29:41.3942148Z             }
2026-06-21T22:29:41.3942253Z           ]
2026-06-21T22:29:41.3942354Z         }
2026-06-21T22:29:41.3942549Z       }
2026-06-21T22:29:41.3942654Z     },
2026-06-21T22:29:41.3942750Z     {
2026-06-21T22:29:41.3942873Z       "id": "REQ-MANIFEST-2",
2026-06-21T22:29:41.3943407Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T22:29:41.3943534Z       "requiredStages": [
2026-06-21T22:29:41.3943640Z         "doc",
2026-06-21T22:29:41.3943745Z         "impl",
2026-06-21T22:29:41.3943849Z         "unit"
2026-06-21T22:29:41.3943950Z       ],
2026-06-21T22:29:41.3944050Z       "stages": {
2026-06-21T22:29:41.3944154Z         "doc": {
2026-06-21T22:29:41.3944264Z           "complete": true,
2026-06-21T22:29:41.3944374Z           "evidence": [
2026-06-21T22:29:41.3944479Z             {
2026-06-21T22:29:41.3944599Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3944708Z               "line": 75
2026-06-21T22:29:41.3944812Z             }
2026-06-21T22:29:41.3944914Z           ]
2026-06-21T22:29:41.3945032Z         },
2026-06-21T22:29:41.3945132Z         "impl": {
2026-06-21T22:29:41.3945248Z           "complete": true,
2026-06-21T22:29:41.3945361Z           "evidence": [
2026-06-21T22:29:41.3945455Z             {
2026-06-21T22:29:41.3945598Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3945711Z               "line": 82
2026-06-21T22:29:41.3945810Z             },
2026-06-21T22:29:41.3945911Z             {
2026-06-21T22:29:41.3946063Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3946168Z               "line": 15
2026-06-21T22:29:41.3946269Z             },
2026-06-21T22:29:41.3946373Z             {
2026-06-21T22:29:41.3946517Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3946635Z               "line": 65
2026-06-21T22:29:41.3946735Z             },
2026-06-21T22:29:41.3946836Z             {
2026-06-21T22:29:41.3946984Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3947093Z               "line": 83
2026-06-21T22:29:41.3947194Z             },
2026-06-21T22:29:41.3947293Z             {
2026-06-21T22:29:41.3947427Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3947533Z               "line": 183
2026-06-21T22:29:41.3947636Z             },
2026-06-21T22:29:41.3947737Z             {
2026-06-21T22:29:41.3947881Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3947990Z               "line": 527
2026-06-21T22:29:41.3948091Z             },
2026-06-21T22:29:41.3948191Z             {
2026-06-21T22:29:41.3948337Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3948446Z               "line": 553
2026-06-21T22:29:41.3948550Z             },
2026-06-21T22:29:41.3948649Z             {
2026-06-21T22:29:41.3948802Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3948902Z               "line": 671
2026-06-21T22:29:41.3949069Z             },
2026-06-21T22:29:41.3949178Z             {
2026-06-21T22:29:41.3949316Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3949422Z               "line": 696
2026-06-21T22:29:41.3949522Z             },
2026-06-21T22:29:41.3949621Z             {
2026-06-21T22:29:41.3949766Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3949988Z               "line": 719
2026-06-21T22:29:41.3950090Z             },
2026-06-21T22:29:41.3950189Z             {
2026-06-21T22:29:41.3950338Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3950447Z               "line": 734
2026-06-21T22:29:41.3950551Z             },
2026-06-21T22:29:41.3950648Z             {
2026-06-21T22:29:41.3950790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3950889Z               "line": 5567
2026-06-21T22:29:41.3950989Z             },
2026-06-21T22:29:41.3951093Z             {
2026-06-21T22:29:41.3951216Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3951426Z               "line": 5581
2026-06-21T22:29:41.3951525Z             },
2026-06-21T22:29:41.3951630Z             {
2026-06-21T22:29:41.3951750Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3951859Z               "line": 5615
2026-06-21T22:29:41.3951965Z             }
2026-06-21T22:29:41.3952074Z           ]
2026-06-21T22:29:41.3952183Z         },
2026-06-21T22:29:41.3952280Z         "int": {
2026-06-21T22:29:41.3952398Z           "complete": false,
2026-06-21T22:29:41.3952508Z           "evidence": []
2026-06-21T22:29:41.3952609Z         },
2026-06-21T22:29:41.3952713Z         "unit": {
2026-06-21T22:29:41.3952832Z           "complete": true,
2026-06-21T22:29:41.3952934Z           "evidence": [
2026-06-21T22:29:41.3953027Z             {
2026-06-21T22:29:41.3953175Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.3953286Z               "line": 921
2026-06-21T22:29:41.3953385Z             },
2026-06-21T22:29:41.3953485Z             {
2026-06-21T22:29:41.3953639Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3953742Z               "line": 211
2026-06-21T22:29:41.3953837Z             },
2026-06-21T22:29:41.3953938Z             {
2026-06-21T22:29:41.3954090Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3954200Z               "line": 272
2026-06-21T22:29:41.3954296Z             },
2026-06-21T22:29:41.3954395Z             {
2026-06-21T22:29:41.3954539Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3954643Z               "line": 313
2026-06-21T22:29:41.3954747Z             },
2026-06-21T22:29:41.3954854Z             {
2026-06-21T22:29:41.3954996Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3955110Z               "line": 325
2026-06-21T22:29:41.3955202Z             },
2026-06-21T22:29:41.3955310Z             {
2026-06-21T22:29:41.3955454Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3955564Z               "line": 336
2026-06-21T22:29:41.3955668Z             },
2026-06-21T22:29:41.3955769Z             {
2026-06-21T22:29:41.3955911Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3956020Z               "line": 345
2026-06-21T22:29:41.3956125Z             },
2026-06-21T22:29:41.3956234Z             {
2026-06-21T22:29:41.3956375Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3956485Z               "line": 361
2026-06-21T22:29:41.3956581Z             },
2026-06-21T22:29:41.3956685Z             {
2026-06-21T22:29:41.3956825Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3956938Z               "line": 444
2026-06-21T22:29:41.3957043Z             },
2026-06-21T22:29:41.3957144Z             {
2026-06-21T22:29:41.3957290Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3957397Z               "line": 958
2026-06-21T22:29:41.3957501Z             },
2026-06-21T22:29:41.3957610Z             {
2026-06-21T22:29:41.3957759Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3957873Z               "line": 982
2026-06-21T22:29:41.3957977Z             },
2026-06-21T22:29:41.3958074Z             {
2026-06-21T22:29:41.3958206Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3958394Z               "line": 1008
2026-06-21T22:29:41.3958497Z             },
2026-06-21T22:29:41.3958602Z             {
2026-06-21T22:29:41.3958751Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3958863Z               "line": 1027
2026-06-21T22:29:41.3959040Z             },
2026-06-21T22:29:41.3959134Z             {
2026-06-21T22:29:41.3959280Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3959391Z               "line": 1058
2026-06-21T22:29:41.3959495Z             },
2026-06-21T22:29:41.3959599Z             {
2026-06-21T22:29:41.3959738Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.3959968Z               "line": 309
2026-06-21T22:29:41.3960067Z             },
2026-06-21T22:29:41.3960172Z             {
2026-06-21T22:29:41.3960297Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.3960406Z               "line": 606
2026-06-21T22:29:41.3960501Z             },
2026-06-21T22:29:41.3960612Z             {
2026-06-21T22:29:41.3960739Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3960845Z               "line": 8610
2026-06-21T22:29:41.3960941Z             },
2026-06-21T22:29:41.3961044Z             {
2026-06-21T22:29:41.3961174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3961280Z               "line": 9558
2026-06-21T22:29:41.3961383Z             }
2026-06-21T22:29:41.3961487Z           ]
2026-06-21T22:29:41.3961587Z         }
2026-06-21T22:29:41.3961686Z       }
2026-06-21T22:29:41.3961780Z     },
2026-06-21T22:29:41.3961885Z     {
2026-06-21T22:29:41.3962005Z       "id": "REQ-MANIFEST-3",
2026-06-21T22:29:41.3962659Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T22:29:41.3962781Z       "requiredStages": [
2026-06-21T22:29:41.3962883Z         "doc",
2026-06-21T22:29:41.3962997Z         "impl",
2026-06-21T22:29:41.3963101Z         "unit"
2026-06-21T22:29:41.3963198Z       ],
2026-06-21T22:29:41.3963287Z       "stages": {
2026-06-21T22:29:41.3963387Z         "doc": {
2026-06-21T22:29:41.3963494Z           "complete": true,
2026-06-21T22:29:41.3963597Z           "evidence": [
2026-06-21T22:29:41.3963702Z             {
2026-06-21T22:29:41.3963823Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3963930Z               "line": 81
2026-06-21T22:29:41.3964036Z             }
2026-06-21T22:29:41.3964133Z           ]
2026-06-21T22:29:41.3964241Z         },
2026-06-21T22:29:41.3964345Z         "impl": {
2026-06-21T22:29:41.3964474Z           "complete": true,
2026-06-21T22:29:41.3964579Z           "evidence": [
2026-06-21T22:29:41.3964683Z             {
2026-06-21T22:29:41.3964832Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3964936Z               "line": 92
2026-06-21T22:29:41.3965041Z             },
2026-06-21T22:29:41.3965137Z             {
2026-06-21T22:29:41.3965289Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3965394Z               "line": 101
2026-06-21T22:29:41.3965494Z             },
2026-06-21T22:29:41.3965594Z             {
2026-06-21T22:29:41.3965734Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3965842Z               "line": 132
2026-06-21T22:29:41.3965942Z             },
2026-06-21T22:29:41.3966049Z             {
2026-06-21T22:29:41.3966195Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3966305Z               "line": 577
2026-06-21T22:29:41.3966411Z             },
2026-06-21T22:29:41.3966509Z             {
2026-06-21T22:29:41.3966651Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3966756Z               "line": 633
2026-06-21T22:29:41.3966860Z             },
2026-06-21T22:29:41.3966959Z             {
2026-06-21T22:29:41.3967089Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3967302Z               "line": 5628
2026-06-21T22:29:41.3967404Z             },
2026-06-21T22:29:41.3967508Z             {
2026-06-21T22:29:41.3967637Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3967742Z               "line": 5654
2026-06-21T22:29:41.3967855Z             }
2026-06-21T22:29:41.3967952Z           ]
2026-06-21T22:29:41.3968057Z         },
2026-06-21T22:29:41.3968147Z         "int": {
2026-06-21T22:29:41.3968251Z           "complete": false,
2026-06-21T22:29:41.3968357Z           "evidence": []
2026-06-21T22:29:41.3968466Z         },
2026-06-21T22:29:41.3968566Z         "unit": {
2026-06-21T22:29:41.3968681Z           "complete": true,
2026-06-21T22:29:41.3968867Z           "evidence": [
2026-06-21T22:29:41.3969052Z             {
2026-06-21T22:29:41.3969192Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3969292Z               "line": 371
2026-06-21T22:29:41.3969395Z             },
2026-06-21T22:29:41.3969509Z             {
2026-06-21T22:29:41.3969656Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3969755Z               "line": 429
2026-06-21T22:29:41.3969855Z             },
2026-06-21T22:29:41.3972402Z             {
2026-06-21T22:29:41.3972580Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3972689Z               "line": 1082
2026-06-21T22:29:41.3972790Z             },
2026-06-21T22:29:41.3972890Z             {
2026-06-21T22:29:41.3973027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.3973133Z               "line": 8703
2026-06-21T22:29:41.3973233Z             }
2026-06-21T22:29:41.3973332Z           ]
2026-06-21T22:29:41.3973434Z         }
2026-06-21T22:29:41.3973542Z       }
2026-06-21T22:29:41.3973642Z     },
2026-06-21T22:29:41.3973739Z     {
2026-06-21T22:29:41.3973852Z       "id": "REQ-MANIFEST-4",
2026-06-21T22:29:41.3974596Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T22:29:41.3974726Z       "requiredStages": [
2026-06-21T22:29:41.3974824Z         "doc",
2026-06-21T22:29:41.3974928Z         "impl",
2026-06-21T22:29:41.3975029Z         "unit"
2026-06-21T22:29:41.3975125Z       ],
2026-06-21T22:29:41.3975224Z       "stages": {
2026-06-21T22:29:41.3975330Z         "doc": {
2026-06-21T22:29:41.3975440Z           "complete": true,
2026-06-21T22:29:41.3975539Z           "evidence": [
2026-06-21T22:29:41.3975640Z             {
2026-06-21T22:29:41.3975759Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3975878Z               "line": 88
2026-06-21T22:29:41.3975979Z             }
2026-06-21T22:29:41.3976078Z           ]
2026-06-21T22:29:41.3976187Z         },
2026-06-21T22:29:41.3976284Z         "impl": {
2026-06-21T22:29:41.3976402Z           "complete": true,
2026-06-21T22:29:41.3976507Z           "evidence": [
2026-06-21T22:29:41.3976594Z             {
2026-06-21T22:29:41.3976745Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3976850Z               "line": 100
2026-06-21T22:29:41.3976957Z             },
2026-06-21T22:29:41.3977055Z             {
2026-06-21T22:29:41.3977202Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3977302Z               "line": 183
2026-06-21T22:29:41.3977410Z             },
2026-06-21T22:29:41.3977509Z             {
2026-06-21T22:29:41.3977659Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.3977767Z               "line": 83
2026-06-21T22:29:41.3977862Z             },
2026-06-21T22:29:41.3977964Z             {
2026-06-21T22:29:41.3978110Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3978217Z               "line": 629
2026-06-21T22:29:41.3978316Z             },
2026-06-21T22:29:41.3978416Z             {
2026-06-21T22:29:41.3978559Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3978807Z               "line": 654
2026-06-21T22:29:41.3978912Z             }
2026-06-21T22:29:41.3979102Z           ]
2026-06-21T22:29:41.3979203Z         },
2026-06-21T22:29:41.3979303Z         "int": {
2026-06-21T22:29:41.3979422Z           "complete": false,
2026-06-21T22:29:41.3979518Z           "evidence": []
2026-06-21T22:29:41.3979622Z         },
2026-06-21T22:29:41.3979722Z         "unit": {
2026-06-21T22:29:41.3979833Z           "complete": true,
2026-06-21T22:29:41.3979937Z           "evidence": [
2026-06-21T22:29:41.3980036Z             {
2026-06-21T22:29:41.3980188Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3980405Z               "line": 1445
2026-06-21T22:29:41.3980502Z             },
2026-06-21T22:29:41.3980606Z             {
2026-06-21T22:29:41.3980749Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.3980864Z               "line": 1478
2026-06-21T22:29:41.3980959Z             },
2026-06-21T22:29:41.3981069Z             {
2026-06-21T22:29:41.3981217Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.3981320Z               "line": 988
2026-06-21T22:29:41.3981417Z             }
2026-06-21T22:29:41.3981503Z           ]
2026-06-21T22:29:41.3981607Z         }
2026-06-21T22:29:41.3981703Z       }
2026-06-21T22:29:41.3981799Z     },
2026-06-21T22:29:41.3981903Z     {
2026-06-21T22:29:41.3982013Z       "id": "REQ-MANIFEST-5",
2026-06-21T22:29:41.3984910Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T22:29:41.3985056Z       "requiredStages": [
2026-06-21T22:29:41.3985151Z         "doc",
2026-06-21T22:29:41.3985253Z         "impl",
2026-06-21T22:29:41.3985343Z         "unit"
2026-06-21T22:29:41.3985451Z       ],
2026-06-21T22:29:41.3985580Z       "stages": {
2026-06-21T22:29:41.3985676Z         "doc": {
2026-06-21T22:29:41.3985794Z           "complete": true,
2026-06-21T22:29:41.3985899Z           "evidence": [
2026-06-21T22:29:41.3986005Z             {
2026-06-21T22:29:41.3986113Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3986234Z               "line": 83
2026-06-21T22:29:41.3986339Z             }
2026-06-21T22:29:41.3986438Z           ]
2026-06-21T22:29:41.3986539Z         },
2026-06-21T22:29:41.3986643Z         "impl": {
2026-06-21T22:29:41.3986752Z           "complete": true,
2026-06-21T22:29:41.3986849Z           "evidence": [
2026-06-21T22:29:41.3986953Z             {
2026-06-21T22:29:41.3987100Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3987212Z               "line": 120
2026-06-21T22:29:41.3987310Z             }
2026-06-21T22:29:41.3987411Z           ]
2026-06-21T22:29:41.3987517Z         },
2026-06-21T22:29:41.3987615Z         "int": {
2026-06-21T22:29:41.3987738Z           "complete": false,
2026-06-21T22:29:41.3987844Z           "evidence": []
2026-06-21T22:29:41.3987942Z         },
2026-06-21T22:29:41.3988045Z         "unit": {
2026-06-21T22:29:41.3988147Z           "complete": true,
2026-06-21T22:29:41.3988252Z           "evidence": [
2026-06-21T22:29:41.3988346Z             {
2026-06-21T22:29:41.3988599Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T22:29:41.3988708Z               "line": 404
2026-06-21T22:29:41.3988810Z             },
2026-06-21T22:29:41.3988914Z             {
2026-06-21T22:29:41.3989134Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3989248Z               "line": 1155
2026-06-21T22:29:41.3989338Z             },
2026-06-21T22:29:41.3989439Z             {
2026-06-21T22:29:41.3989581Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3989687Z               "line": 1184
2026-06-21T22:29:41.3989787Z             },
2026-06-21T22:29:41.3989886Z             {
2026-06-21T22:29:41.3990140Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3990235Z               "line": 1224
2026-06-21T22:29:41.3990336Z             },
2026-06-21T22:29:41.3990436Z             {
2026-06-21T22:29:41.3990572Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3990687Z               "line": 1239
2026-06-21T22:29:41.3990786Z             }
2026-06-21T22:29:41.3990889Z           ]
2026-06-21T22:29:41.3990980Z         }
2026-06-21T22:29:41.3991081Z       }
2026-06-21T22:29:41.3991181Z     },
2026-06-21T22:29:41.3991276Z     {
2026-06-21T22:29:41.3991386Z       "id": "REQ-MANIFEST-6",
2026-06-21T22:29:41.3993508Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T22:29:41.3993647Z       "requiredStages": [
2026-06-21T22:29:41.3993747Z         "doc",
2026-06-21T22:29:41.3993856Z         "unit"
2026-06-21T22:29:41.3993958Z       ],
2026-06-21T22:29:41.3994053Z       "stages": {
2026-06-21T22:29:41.3994152Z         "doc": {
2026-06-21T22:29:41.3994267Z           "complete": true,
2026-06-21T22:29:41.3994372Z           "evidence": [
2026-06-21T22:29:41.3994477Z             {
2026-06-21T22:29:41.3994601Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.3994710Z               "line": 141
2026-06-21T22:29:41.3994815Z             }
2026-06-21T22:29:41.3994907Z           ]
2026-06-21T22:29:41.3995030Z         },
2026-06-21T22:29:41.3995130Z         "impl": {
2026-06-21T22:29:41.3995250Z           "complete": false,
2026-06-21T22:29:41.3995364Z           "evidence": []
2026-06-21T22:29:41.3995460Z         },
2026-06-21T22:29:41.3995560Z         "int": {
2026-06-21T22:29:41.3995669Z           "complete": false,
2026-06-21T22:29:41.3995770Z           "evidence": []
2026-06-21T22:29:41.3995856Z         },
2026-06-21T22:29:41.3995959Z         "unit": {
2026-06-21T22:29:41.3996063Z           "complete": true,
2026-06-21T22:29:41.3996169Z           "evidence": [
2026-06-21T22:29:41.3996274Z             {
2026-06-21T22:29:41.3996416Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.3996531Z               "line": 1261
2026-06-21T22:29:41.3996630Z             }
2026-06-21T22:29:41.3996736Z           ]
2026-06-21T22:29:41.3996836Z         }
2026-06-21T22:29:41.3996922Z       }
2026-06-21T22:29:41.3997017Z     },
2026-06-21T22:29:41.3997109Z     {
2026-06-21T22:29:41.3997237Z       "id": "REQ-MANIFEST-7",
2026-06-21T22:29:41.4000375Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T22:29:41.4000747Z       "requiredStages": [
2026-06-21T22:29:41.4000843Z         "doc",
2026-06-21T22:29:41.4000944Z         "impl",
2026-06-21T22:29:41.4001047Z         "unit"
2026-06-21T22:29:41.4001146Z       ],
2026-06-21T22:29:41.4001237Z       "stages": {
2026-06-21T22:29:41.4001346Z         "doc": {
2026-06-21T22:29:41.4001473Z           "complete": true,
2026-06-21T22:29:41.4001579Z           "evidence": [
2026-06-21T22:29:41.4001684Z             {
2026-06-21T22:29:41.4001802Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4001908Z               "line": 35
2026-06-21T22:29:41.4002008Z             }
2026-06-21T22:29:41.4002107Z           ]
2026-06-21T22:29:41.4002204Z         },
2026-06-21T22:29:41.4002308Z         "impl": {
2026-06-21T22:29:41.4002413Z           "complete": true,
2026-06-21T22:29:41.4002508Z           "evidence": [
2026-06-21T22:29:41.4002604Z             {
2026-06-21T22:29:41.4002742Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4002858Z               "line": 54
2026-06-21T22:29:41.4002961Z             }
2026-06-21T22:29:41.4003075Z           ]
2026-06-21T22:29:41.4003182Z         },
2026-06-21T22:29:41.4003281Z         "int": {
2026-06-21T22:29:41.4003395Z           "complete": false,
2026-06-21T22:29:41.4003497Z           "evidence": []
2026-06-21T22:29:41.4003596Z         },
2026-06-21T22:29:41.4003704Z         "unit": {
2026-06-21T22:29:41.4003809Z           "complete": true,
2026-06-21T22:29:41.4003917Z           "evidence": [
2026-06-21T22:29:41.4004016Z             {
2026-06-21T22:29:41.4004164Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4004274Z               "line": 1638
2026-06-21T22:29:41.4004378Z             }
2026-06-21T22:29:41.4004484Z           ]
2026-06-21T22:29:41.4004570Z         }
2026-06-21T22:29:41.4004669Z       }
2026-06-21T22:29:41.4004766Z     },
2026-06-21T22:29:41.4004870Z     {
2026-06-21T22:29:41.4004974Z       "id": "REQ-MANIFEST-8",
2026-06-21T22:29:41.4007209Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T22:29:41.4007344Z       "requiredStages": [
2026-06-21T22:29:41.4007449Z         "doc",
2026-06-21T22:29:41.4007553Z         "impl",
2026-06-21T22:29:41.4007659Z         "unit",
2026-06-21T22:29:41.4007758Z         "int"
2026-06-21T22:29:41.4007863Z       ],
2026-06-21T22:29:41.4007964Z       "stages": {
2026-06-21T22:29:41.4008082Z         "doc": {
2026-06-21T22:29:41.4008192Z           "complete": true,
2026-06-21T22:29:41.4008298Z           "evidence": [
2026-06-21T22:29:41.4008402Z             {
2026-06-21T22:29:41.4008521Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4008632Z               "line": 184
2026-06-21T22:29:41.4008826Z             },
2026-06-21T22:29:41.4008930Z             {
2026-06-21T22:29:41.4009124Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4009229Z               "line": 46
2026-06-21T22:29:41.4009324Z             }
2026-06-21T22:29:41.4009424Z           ]
2026-06-21T22:29:41.4009519Z         },
2026-06-21T22:29:41.4009620Z         "impl": {
2026-06-21T22:29:41.4009734Z           "complete": true,
2026-06-21T22:29:41.4009833Z           "evidence": [
2026-06-21T22:29:41.4009935Z             {
2026-06-21T22:29:41.4010091Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4010197Z               "line": 222
2026-06-21T22:29:41.4010396Z             },
2026-06-21T22:29:41.4010502Z             {
2026-06-21T22:29:41.4010649Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.4010749Z               "line": 306
2026-06-21T22:29:41.4010846Z             }
2026-06-21T22:29:41.4010940Z           ]
2026-06-21T22:29:41.4011036Z         },
2026-06-21T22:29:41.4011146Z         "int": {
2026-06-21T22:29:41.4011251Z           "complete": true,
2026-06-21T22:29:41.4011360Z           "evidence": [
2026-06-21T22:29:41.4011466Z             {
2026-06-21T22:29:41.4011607Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T22:29:41.4011721Z               "line": 18
2026-06-21T22:29:41.4011821Z             }
2026-06-21T22:29:41.4011920Z           ]
2026-06-21T22:29:41.4012024Z         },
2026-06-21T22:29:41.4012129Z         "unit": {
2026-06-21T22:29:41.4012239Z           "complete": true,
2026-06-21T22:29:41.4012343Z           "evidence": [
2026-06-21T22:29:41.4012444Z             {
2026-06-21T22:29:41.4012592Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4012705Z               "line": 1656
2026-06-21T22:29:41.4012811Z             },
2026-06-21T22:29:41.4012897Z             {
2026-06-21T22:29:41.4013045Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4013155Z               "line": 316
2026-06-21T22:29:41.4013264Z             },
2026-06-21T22:29:41.4013364Z             {
2026-06-21T22:29:41.4013507Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4013617Z               "line": 332
2026-06-21T22:29:41.4013718Z             },
2026-06-21T22:29:41.4013813Z             {
2026-06-21T22:29:41.4013951Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4014057Z               "line": 345
2026-06-21T22:29:41.4014156Z             },
2026-06-21T22:29:41.4014259Z             {
2026-06-21T22:29:41.4014388Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.4014496Z               "line": 422
2026-06-21T22:29:41.4014604Z             },
2026-06-21T22:29:41.4014706Z             {
2026-06-21T22:29:41.4014848Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T22:29:41.4014948Z               "line": 436
2026-06-21T22:29:41.4015054Z             }
2026-06-21T22:29:41.4015163Z           ]
2026-06-21T22:29:41.4015268Z         }
2026-06-21T22:29:41.4015369Z       }
2026-06-21T22:29:41.4015468Z     },
2026-06-21T22:29:41.4015568Z     {
2026-06-21T22:29:41.4015674Z       "id": "REQ-MESH-1",
2026-06-21T22:29:41.4017784Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T22:29:41.4017924Z       "requiredStages": [
2026-06-21T22:29:41.4018024Z         "impl",
2026-06-21T22:29:41.4018243Z         "unit",
2026-06-21T22:29:41.4018347Z         "int"
2026-06-21T22:29:41.4018442Z       ],
2026-06-21T22:29:41.4018548Z       "stages": {
2026-06-21T22:29:41.4018652Z         "doc": {
2026-06-21T22:29:41.4018771Z           "complete": false,
2026-06-21T22:29:41.4018877Z           "evidence": []
2026-06-21T22:29:41.4019057Z         },
2026-06-21T22:29:41.4019154Z         "impl": {
2026-06-21T22:29:41.4019259Z           "complete": true,
2026-06-21T22:29:41.4019371Z           "evidence": [
2026-06-21T22:29:41.4019467Z             {
2026-06-21T22:29:41.4019613Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4019822Z               "line": 972
2026-06-21T22:29:41.4019928Z             },
2026-06-21T22:29:41.4020031Z             {
2026-06-21T22:29:41.4020176Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4020280Z               "line": 38
2026-06-21T22:29:41.4020365Z             },
2026-06-21T22:29:41.4020462Z             {
2026-06-21T22:29:41.4020618Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4020723Z               "line": 161
2026-06-21T22:29:41.4020834Z             },
2026-06-21T22:29:41.4020929Z             {
2026-06-21T22:29:41.4021072Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4021181Z               "line": 206
2026-06-21T22:29:41.4021281Z             },
2026-06-21T22:29:41.4021382Z             {
2026-06-21T22:29:41.4021529Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4021638Z               "line": 57
2026-06-21T22:29:41.4021730Z             },
2026-06-21T22:29:41.4021839Z             {
2026-06-21T22:29:41.4021997Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4022107Z               "line": 24
2026-06-21T22:29:41.4022210Z             },
2026-06-21T22:29:41.4022309Z             {
2026-06-21T22:29:41.4022466Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4022579Z               "line": 142
2026-06-21T22:29:41.4022679Z             },
2026-06-21T22:29:41.4022780Z             {
2026-06-21T22:29:41.4022927Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4023034Z               "line": 162
2026-06-21T22:29:41.4023124Z             }
2026-06-21T22:29:41.4023213Z           ]
2026-06-21T22:29:41.4023309Z         },
2026-06-21T22:29:41.4023419Z         "int": {
2026-06-21T22:29:41.4023523Z           "complete": true,
2026-06-21T22:29:41.4023629Z           "evidence": [
2026-06-21T22:29:41.4023733Z             {
2026-06-21T22:29:41.4023881Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T22:29:41.4023987Z               "line": 67
2026-06-21T22:29:41.4024086Z             },
2026-06-21T22:29:41.4024196Z             {
2026-06-21T22:29:41.4024331Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T22:29:41.4024443Z               "line": 93
2026-06-21T22:29:41.4024539Z             },
2026-06-21T22:29:41.4024641Z             {
2026-06-21T22:29:41.4024786Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T22:29:41.4024886Z               "line": 117
2026-06-21T22:29:41.4024995Z             },
2026-06-21T22:29:41.4025094Z             {
2026-06-21T22:29:41.4025241Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T22:29:41.4025343Z               "line": 134
2026-06-21T22:29:41.4025442Z             }
2026-06-21T22:29:41.4025542Z           ]
2026-06-21T22:29:41.4025643Z         },
2026-06-21T22:29:41.4025751Z         "unit": {
2026-06-21T22:29:41.4025861Z           "complete": true,
2026-06-21T22:29:41.4025976Z           "evidence": [
2026-06-21T22:29:41.4026076Z             {
2026-06-21T22:29:41.4026220Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4026334Z               "line": 427
2026-06-21T22:29:41.4026429Z             },
2026-06-21T22:29:41.4026530Z             {
2026-06-21T22:29:41.4026786Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4026892Z               "line": 376
2026-06-21T22:29:41.4027001Z             },
2026-06-21T22:29:41.4027087Z             {
2026-06-21T22:29:41.4027235Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4027344Z               "line": 412
2026-06-21T22:29:41.4027450Z             },
2026-06-21T22:29:41.4027555Z             {
2026-06-21T22:29:41.4027710Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4027821Z               "line": 427
2026-06-21T22:29:41.4027917Z             },
2026-06-21T22:29:41.4028025Z             {
2026-06-21T22:29:41.4028260Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4028368Z               "line": 438
2026-06-21T22:29:41.4028469Z             },
2026-06-21T22:29:41.4028574Z             {
2026-06-21T22:29:41.4028726Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4028846Z               "line": 449
2026-06-21T22:29:41.4029036Z             },
2026-06-21T22:29:41.4029156Z             {
2026-06-21T22:29:41.4029308Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4029423Z               "line": 460
2026-06-21T22:29:41.4029523Z             },
2026-06-21T22:29:41.4029622Z             {
2026-06-21T22:29:41.4029767Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4029875Z               "line": 496
2026-06-21T22:29:41.4029974Z             },
2026-06-21T22:29:41.4030079Z             {
2026-06-21T22:29:41.4030229Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4030344Z               "line": 519
2026-06-21T22:29:41.4030449Z             },
2026-06-21T22:29:41.4030540Z             {
2026-06-21T22:29:41.4030697Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4030792Z               "line": 546
2026-06-21T22:29:41.4030892Z             }
2026-06-21T22:29:41.4030993Z           ]
2026-06-21T22:29:41.4031093Z         }
2026-06-21T22:29:41.4031193Z       }
2026-06-21T22:29:41.4031293Z     },
2026-06-21T22:29:41.4031394Z     {
2026-06-21T22:29:41.4031503Z       "id": "REQ-MESH-2",
2026-06-21T22:29:41.4034074Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T22:29:41.4034228Z       "requiredStages": [
2026-06-21T22:29:41.4034331Z         "impl",
2026-06-21T22:29:41.4034432Z         "unit",
2026-06-21T22:29:41.4034533Z         "int"
2026-06-21T22:29:41.4034632Z       ],
2026-06-21T22:29:41.4034746Z       "stages": {
2026-06-21T22:29:41.4034848Z         "doc": {
2026-06-21T22:29:41.4034965Z           "complete": false,
2026-06-21T22:29:41.4035076Z           "evidence": []
2026-06-21T22:29:41.4035167Z         },
2026-06-21T22:29:41.4035271Z         "impl": {
2026-06-21T22:29:41.4035403Z           "complete": true,
2026-06-21T22:29:41.4035513Z           "evidence": [
2026-06-21T22:29:41.4035611Z             {
2026-06-21T22:29:41.4035748Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4035859Z               "line": 807
2026-06-21T22:29:41.4035964Z             },
2026-06-21T22:29:41.4036208Z             {
2026-06-21T22:29:41.4036355Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4036466Z               "line": 118
2026-06-21T22:29:41.4036565Z             },
2026-06-21T22:29:41.4036669Z             {
2026-06-21T22:29:41.4036813Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4036918Z               "line": 347
2026-06-21T22:29:41.4037017Z             },
2026-06-21T22:29:41.4037114Z             {
2026-06-21T22:29:41.4037256Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4037361Z               "line": 389
2026-06-21T22:29:41.4037466Z             },
2026-06-21T22:29:41.4037671Z             {
2026-06-21T22:29:41.4037809Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4037914Z               "line": 403
2026-06-21T22:29:41.4038006Z             },
2026-06-21T22:29:41.4038110Z             {
2026-06-21T22:29:41.4038251Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4038366Z               "line": 492
2026-06-21T22:29:41.4038458Z             },
2026-06-21T22:29:41.4038557Z             {
2026-06-21T22:29:41.4038700Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4038805Z               "line": 507
2026-06-21T22:29:41.4038909Z             },
2026-06-21T22:29:41.4039072Z             {
2026-06-21T22:29:41.4039219Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4039325Z               "line": 534
2026-06-21T22:29:41.4039430Z             },
2026-06-21T22:29:41.4039534Z             {
2026-06-21T22:29:41.4039678Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4039796Z               "line": 207
2026-06-21T22:29:41.4039901Z             },
2026-06-21T22:29:41.4040002Z             {
2026-06-21T22:29:41.4040139Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4040250Z               "line": 755
2026-06-21T22:29:41.4040355Z             },
2026-06-21T22:29:41.4040454Z             {
2026-06-21T22:29:41.4040606Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4040705Z               "line": 816
2026-06-21T22:29:41.4040808Z             },
2026-06-21T22:29:41.4040904Z             {
2026-06-21T22:29:41.4041048Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4041166Z               "line": 869
2026-06-21T22:29:41.4041258Z             },
2026-06-21T22:29:41.4041362Z             {
2026-06-21T22:29:41.4041509Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4041615Z               "line": 891
2026-06-21T22:29:41.4041729Z             },
2026-06-21T22:29:41.4041839Z             {
2026-06-21T22:29:41.4041987Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4042087Z               "line": 122
2026-06-21T22:29:41.4042192Z             },
2026-06-21T22:29:41.4042297Z             {
2026-06-21T22:29:41.4042425Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4042541Z               "line": 44
2026-06-21T22:29:41.4042640Z             },
2026-06-21T22:29:41.4042740Z             {
2026-06-21T22:29:41.4042875Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4042983Z               "line": 184
2026-06-21T22:29:41.4043088Z             },
2026-06-21T22:29:41.4043189Z             {
2026-06-21T22:29:41.4043326Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4043434Z               "line": 211
2026-06-21T22:29:41.4043540Z             },
2026-06-21T22:29:41.4043629Z             {
2026-06-21T22:29:41.4043766Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4043868Z               "line": 251
2026-06-21T22:29:41.4043967Z             },
2026-06-21T22:29:41.4044067Z             {
2026-06-21T22:29:41.4044201Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4044305Z               "line": 275
2026-06-21T22:29:41.4044511Z             },
2026-06-21T22:29:41.4044620Z             {
2026-06-21T22:29:41.4044764Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4044868Z               "line": 289
2026-06-21T22:29:41.4044958Z             },
2026-06-21T22:29:41.4045054Z             {
2026-06-21T22:29:41.4045197Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4045292Z               "line": 300
2026-06-21T22:29:41.4045398Z             },
2026-06-21T22:29:41.4045498Z             {
2026-06-21T22:29:41.4045631Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4045742Z               "line": 313
2026-06-21T22:29:41.4045945Z             }
2026-06-21T22:29:41.4046049Z           ]
2026-06-21T22:29:41.4046144Z         },
2026-06-21T22:29:41.4046247Z         "int": {
2026-06-21T22:29:41.4046357Z           "complete": true,
2026-06-21T22:29:41.4046463Z           "evidence": [
2026-06-21T22:29:41.4046566Z             {
2026-06-21T22:29:41.4046716Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T22:29:41.4046830Z               "line": 116
2026-06-21T22:29:41.4046934Z             },
2026-06-21T22:29:41.4047030Z             {
2026-06-21T22:29:41.4047177Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T22:29:41.4047282Z               "line": 181
2026-06-21T22:29:41.4047378Z             }
2026-06-21T22:29:41.4047478Z           ]
2026-06-21T22:29:41.4047582Z         },
2026-06-21T22:29:41.4047689Z         "unit": {
2026-06-21T22:29:41.4047793Z           "complete": true,
2026-06-21T22:29:41.4047906Z           "evidence": [
2026-06-21T22:29:41.4048008Z             {
2026-06-21T22:29:41.4048159Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4048265Z               "line": 999
2026-06-21T22:29:41.4048374Z             },
2026-06-21T22:29:41.4048469Z             {
2026-06-21T22:29:41.4048614Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4048726Z               "line": 1016
2026-06-21T22:29:41.4048817Z             },
2026-06-21T22:29:41.4048912Z             {
2026-06-21T22:29:41.4049126Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4049226Z               "line": 1024
2026-06-21T22:29:41.4049337Z             },
2026-06-21T22:29:41.4049446Z             {
2026-06-21T22:29:41.4049599Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4049694Z               "line": 1048
2026-06-21T22:29:41.4049798Z             },
2026-06-21T22:29:41.4049905Z             {
2026-06-21T22:29:41.4050061Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4050181Z               "line": 1499
2026-06-21T22:29:41.4050286Z             },
2026-06-21T22:29:41.4050385Z             {
2026-06-21T22:29:41.4050520Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4050624Z               "line": 347
2026-06-21T22:29:41.4050724Z             },
2026-06-21T22:29:41.4050824Z             {
2026-06-21T22:29:41.4050971Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4051080Z               "line": 370
2026-06-21T22:29:41.4051186Z             },
2026-06-21T22:29:41.4051284Z             {
2026-06-21T22:29:41.4051421Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4051536Z               "line": 407
2026-06-21T22:29:41.4051641Z             },
2026-06-21T22:29:41.4051740Z             {
2026-06-21T22:29:41.4051856Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4051970Z               "line": 431
2026-06-21T22:29:41.4052060Z             },
2026-06-21T22:29:41.4052161Z             {
2026-06-21T22:29:41.4052303Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4052418Z               "line": 483
2026-06-21T22:29:41.4052528Z             },
2026-06-21T22:29:41.4052633Z             {
2026-06-21T22:29:41.4052781Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4052990Z               "line": 499
2026-06-21T22:29:41.4053096Z             },
2026-06-21T22:29:41.4053190Z             {
2026-06-21T22:29:41.4053333Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4053439Z               "line": 514
2026-06-21T22:29:41.4053538Z             },
2026-06-21T22:29:41.4053638Z             {
2026-06-21T22:29:41.4053778Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4053886Z               "line": 531
2026-06-21T22:29:41.4053990Z             }
2026-06-21T22:29:41.4054085Z           ]
2026-06-21T22:29:41.4054203Z         }
2026-06-21T22:29:41.4054302Z       }
2026-06-21T22:29:41.4054403Z     },
2026-06-21T22:29:41.4054603Z     {
2026-06-21T22:29:41.4054723Z       "id": "REQ-MESH-3",
2026-06-21T22:29:41.4056528Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T22:29:41.4056676Z       "requiredStages": [
2026-06-21T22:29:41.4056793Z         "impl",
2026-06-21T22:29:41.4056908Z         "unit",
2026-06-21T22:29:41.4057013Z         "int"
2026-06-21T22:29:41.4057122Z       ],
2026-06-21T22:29:41.4057217Z       "stages": {
2026-06-21T22:29:41.4057318Z         "doc": {
2026-06-21T22:29:41.4057451Z           "complete": false,
2026-06-21T22:29:41.4057552Z           "evidence": []
2026-06-21T22:29:41.4057656Z         },
2026-06-21T22:29:41.4057770Z         "impl": {
2026-06-21T22:29:41.4057881Z           "complete": true,
2026-06-21T22:29:41.4057999Z           "evidence": [
2026-06-21T22:29:41.4058109Z             {
2026-06-21T22:29:41.4058277Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.4058381Z               "line": 641
2026-06-21T22:29:41.4058486Z             }
2026-06-21T22:29:41.4058592Z           ]
2026-06-21T22:29:41.4058696Z         },
2026-06-21T22:29:41.4058806Z         "int": {
2026-06-21T22:29:41.4058925Z           "complete": true,
2026-06-21T22:29:41.4059106Z           "evidence": [
2026-06-21T22:29:41.4059212Z             {
2026-06-21T22:29:41.4059372Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T22:29:41.4059472Z               "line": 373
2026-06-21T22:29:41.4059597Z             },
2026-06-21T22:29:41.4059696Z             {
2026-06-21T22:29:41.4059835Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T22:29:41.4059940Z               "line": 436
2026-06-21T22:29:41.4060044Z             }
2026-06-21T22:29:41.4060141Z           ]
2026-06-21T22:29:41.4060245Z         },
2026-06-21T22:29:41.4060354Z         "unit": {
2026-06-21T22:29:41.4060474Z           "complete": true,
2026-06-21T22:29:41.4060588Z           "evidence": [
2026-06-21T22:29:41.4060688Z             {
2026-06-21T22:29:41.4060827Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.4060931Z               "line": 910
2026-06-21T22:29:41.4061041Z             }
2026-06-21T22:29:41.4061151Z           ]
2026-06-21T22:29:41.4061255Z         }
2026-06-21T22:29:41.4061355Z       }
2026-06-21T22:29:41.4061452Z     },
2026-06-21T22:29:41.4061550Z     {
2026-06-21T22:29:41.4061650Z       "id": "REQ-MESH-4",
2026-06-21T22:29:41.4063962Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T22:29:41.4064228Z       "requiredStages": [
2026-06-21T22:29:41.4064338Z         "impl",
2026-06-21T22:29:41.4064442Z         "unit",
2026-06-21T22:29:41.4064545Z         "int"
2026-06-21T22:29:41.4064632Z       ],
2026-06-21T22:29:41.4064744Z       "stages": {
2026-06-21T22:29:41.4064853Z         "doc": {
2026-06-21T22:29:41.4064973Z           "complete": false,
2026-06-21T22:29:41.4065211Z           "evidence": []
2026-06-21T22:29:41.4065317Z         },
2026-06-21T22:29:41.4065430Z         "impl": {
2026-06-21T22:29:41.4068170Z           "complete": true,
2026-06-21T22:29:41.4068302Z           "evidence": [
2026-06-21T22:29:41.4068412Z             {
2026-06-21T22:29:41.4068583Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.4068712Z               "line": 33
2026-06-21T22:29:41.4068818Z             },
2026-06-21T22:29:41.4068918Z             {
2026-06-21T22:29:41.4069143Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4069251Z               "line": 68
2026-06-21T22:29:41.4069352Z             },
2026-06-21T22:29:41.4069458Z             {
2026-06-21T22:29:41.4069599Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4069715Z               "line": 111
2026-06-21T22:29:41.4069819Z             },
2026-06-21T22:29:41.4069918Z             {
2026-06-21T22:29:41.4070085Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4070185Z               "line": 462
2026-06-21T22:29:41.4070289Z             },
2026-06-21T22:29:41.4070395Z             {
2026-06-21T22:29:41.4070537Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4070652Z               "line": 711
2026-06-21T22:29:41.4070748Z             },
2026-06-21T22:29:41.4070848Z             {
2026-06-21T22:29:41.4070996Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4071105Z               "line": 725
2026-06-21T22:29:41.4071209Z             },
2026-06-21T22:29:41.4071306Z             {
2026-06-21T22:29:41.4071448Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4071553Z               "line": 132
2026-06-21T22:29:41.4071659Z             },
2026-06-21T22:29:41.4071758Z             {
2026-06-21T22:29:41.4071901Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4072013Z               "line": 26
2026-06-21T22:29:41.4072120Z             },
2026-06-21T22:29:41.4072219Z             {
2026-06-21T22:29:41.4072367Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4072465Z               "line": 97
2026-06-21T22:29:41.4072560Z             },
2026-06-21T22:29:41.4072661Z             {
2026-06-21T22:29:41.4072813Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4072913Z               "line": 119
2026-06-21T22:29:41.4073019Z             },
2026-06-21T22:29:41.4073113Z             {
2026-06-21T22:29:41.4073248Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4073348Z               "line": 82
2026-06-21T22:29:41.4073452Z             },
2026-06-21T22:29:41.4073553Z             {
2026-06-21T22:29:41.4073691Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4073805Z               "line": 111
2026-06-21T22:29:41.4073892Z             },
2026-06-21T22:29:41.4074001Z             {
2026-06-21T22:29:41.4074134Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4074236Z               "line": 232
2026-06-21T22:29:41.4074344Z             },
2026-06-21T22:29:41.4074439Z             {
2026-06-21T22:29:41.4074579Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4074677Z               "line": 245
2026-06-21T22:29:41.4074945Z             },
2026-06-21T22:29:41.4075039Z             {
2026-06-21T22:29:41.4075173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4075285Z               "line": 4665
2026-06-21T22:29:41.4075384Z             }
2026-06-21T22:29:41.4075480Z           ]
2026-06-21T22:29:41.4075572Z         },
2026-06-21T22:29:41.4075676Z         "int": {
2026-06-21T22:29:41.4075780Z           "complete": true,
2026-06-21T22:29:41.4075896Z           "evidence": [
2026-06-21T22:29:41.4076000Z             {
2026-06-21T22:29:41.4076135Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T22:29:41.4076248Z               "line": 98
2026-06-21T22:29:41.4076449Z             },
2026-06-21T22:29:41.4076553Z             {
2026-06-21T22:29:41.4076696Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T22:29:41.4076811Z               "line": 140
2026-06-21T22:29:41.4076906Z             }
2026-06-21T22:29:41.4077001Z           ]
2026-06-21T22:29:41.4077112Z         },
2026-06-21T22:29:41.4077216Z         "unit": {
2026-06-21T22:29:41.4077335Z           "complete": true,
2026-06-21T22:29:41.4077469Z           "evidence": [
2026-06-21T22:29:41.4077568Z             {
2026-06-21T22:29:41.4077730Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.4077829Z               "line": 178
2026-06-21T22:29:41.4077932Z             },
2026-06-21T22:29:41.4078033Z             {
2026-06-21T22:29:41.4078186Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.4078294Z               "line": 242
2026-06-21T22:29:41.4078401Z             },
2026-06-21T22:29:41.4078501Z             {
2026-06-21T22:29:41.4078652Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4078753Z               "line": 1079
2026-06-21T22:29:41.4078853Z             },
2026-06-21T22:29:41.4079020Z             {
2026-06-21T22:29:41.4079178Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4079291Z               "line": 1109
2026-06-21T22:29:41.4079397Z             },
2026-06-21T22:29:41.4079492Z             {
2026-06-21T22:29:41.4079636Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T22:29:41.4079745Z               "line": 1129
2026-06-21T22:29:41.4079845Z             },
2026-06-21T22:29:41.4079951Z             {
2026-06-21T22:29:41.4080102Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T22:29:41.4080202Z               "line": 602
2026-06-21T22:29:41.4080303Z             },
2026-06-21T22:29:41.4080407Z             {
2026-06-21T22:29:41.4080549Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4080669Z               "line": 148
2026-06-21T22:29:41.4080769Z             },
2026-06-21T22:29:41.4080868Z             {
2026-06-21T22:29:41.4081007Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4081107Z               "line": 169
2026-06-21T22:29:41.4081212Z             },
2026-06-21T22:29:41.4081304Z             {
2026-06-21T22:29:41.4081440Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4081551Z               "line": 181
2026-06-21T22:29:41.4081647Z             },
2026-06-21T22:29:41.4081755Z             {
2026-06-21T22:29:41.4081890Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T22:29:41.4081994Z               "line": 202
2026-06-21T22:29:41.4082099Z             },
2026-06-21T22:29:41.4082200Z             {
2026-06-21T22:29:41.4082337Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4082432Z               "line": 375
2026-06-21T22:29:41.4082539Z             },
2026-06-21T22:29:41.4082647Z             {
2026-06-21T22:29:41.4082784Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4082890Z               "line": 407
2026-06-21T22:29:41.4082992Z             },
2026-06-21T22:29:41.4083096Z             {
2026-06-21T22:29:41.4083212Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4083435Z               "line": 10052
2026-06-21T22:29:41.4083536Z             }
2026-06-21T22:29:41.4083631Z           ]
2026-06-21T22:29:41.4083740Z         }
2026-06-21T22:29:41.4083832Z       }
2026-06-21T22:29:41.4083942Z     },
2026-06-21T22:29:41.4084041Z     {
2026-06-21T22:29:41.4084157Z       "id": "REQ-MESH-5",
2026-06-21T22:29:41.4085604Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T22:29:41.4085845Z       "requiredStages": [
2026-06-21T22:29:41.4085959Z         "impl",
2026-06-21T22:29:41.4086055Z         "unit"
2026-06-21T22:29:41.4086174Z       ],
2026-06-21T22:29:41.4086278Z       "stages": {
2026-06-21T22:29:41.4086385Z         "doc": {
2026-06-21T22:29:41.4086503Z           "complete": false,
2026-06-21T22:29:41.4086607Z           "evidence": []
2026-06-21T22:29:41.4086709Z         },
2026-06-21T22:29:41.4086813Z         "impl": {
2026-06-21T22:29:41.4086922Z           "complete": true,
2026-06-21T22:29:41.4087019Z           "evidence": [
2026-06-21T22:29:41.4087128Z             {
2026-06-21T22:29:41.4087275Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4087376Z               "line": 61
2026-06-21T22:29:41.4087480Z             },
2026-06-21T22:29:41.4087595Z             {
2026-06-21T22:29:41.4087738Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4087843Z               "line": 109
2026-06-21T22:29:41.4087949Z             },
2026-06-21T22:29:41.4088044Z             {
2026-06-21T22:29:41.4088185Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4088295Z               "line": 104
2026-06-21T22:29:41.4088398Z             },
2026-06-21T22:29:41.4088502Z             {
2026-06-21T22:29:41.4088645Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4088751Z               "line": 105
2026-06-21T22:29:41.4088850Z             },
2026-06-21T22:29:41.4089027Z             {
2026-06-21T22:29:41.4089184Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4089294Z               "line": 85
2026-06-21T22:29:41.4089394Z             },
2026-06-21T22:29:41.4089508Z             {
2026-06-21T22:29:41.4089657Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4089766Z               "line": 250
2026-06-21T22:29:41.4089866Z             },
2026-06-21T22:29:41.4089966Z             {
2026-06-21T22:29:41.4090109Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4090215Z               "line": 314
2026-06-21T22:29:41.4090314Z             },
2026-06-21T22:29:41.4090410Z             {
2026-06-21T22:29:41.4090558Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4090667Z               "line": 767
2026-06-21T22:29:41.4090767Z             },
2026-06-21T22:29:41.4090855Z             {
2026-06-21T22:29:41.4090986Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.4091090Z               "line": 101
2026-06-21T22:29:41.4091190Z             },
2026-06-21T22:29:41.4091282Z             {
2026-06-21T22:29:41.4091419Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4091530Z               "line": 193
2026-06-21T22:29:41.4091635Z             }
2026-06-21T22:29:41.4091743Z           ]
2026-06-21T22:29:41.4091845Z         },
2026-06-21T22:29:41.4091945Z         "int": {
2026-06-21T22:29:41.4092058Z           "complete": false,
2026-06-21T22:29:41.4092159Z           "evidence": []
2026-06-21T22:29:41.4092268Z         },
2026-06-21T22:29:41.4092368Z         "unit": {
2026-06-21T22:29:41.4092582Z           "complete": true,
2026-06-21T22:29:41.4092692Z           "evidence": [
2026-06-21T22:29:41.4092794Z             {
2026-06-21T22:29:41.4092940Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4093050Z               "line": 1009
2026-06-21T22:29:41.4093151Z             },
2026-06-21T22:29:41.4093250Z             {
2026-06-21T22:29:41.4093393Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T22:29:41.4093502Z               "line": 462
2026-06-21T22:29:41.4093590Z             }
2026-06-21T22:29:41.4093695Z           ]
2026-06-21T22:29:41.4093782Z         }
2026-06-21T22:29:41.4093881Z       }
2026-06-21T22:29:41.4094077Z     },
2026-06-21T22:29:41.4094173Z     {
2026-06-21T22:29:41.4094291Z       "id": "REQ-MESH-6",
2026-06-21T22:29:41.4095550Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T22:29:41.4095685Z       "requiredStages": [
2026-06-21T22:29:41.4095788Z         "impl",
2026-06-21T22:29:41.4095889Z         "unit"
2026-06-21T22:29:41.4095985Z       ],
2026-06-21T22:29:41.4096093Z       "stages": {
2026-06-21T22:29:41.4096197Z         "doc": {
2026-06-21T22:29:41.4096302Z           "complete": false,
2026-06-21T22:29:41.4096415Z           "evidence": []
2026-06-21T22:29:41.4096519Z         },
2026-06-21T22:29:41.4096658Z         "impl": {
2026-06-21T22:29:41.4096777Z           "complete": true,
2026-06-21T22:29:41.4096886Z           "evidence": [
2026-06-21T22:29:41.4096987Z             {
2026-06-21T22:29:41.4097115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4097226Z               "line": 4181
2026-06-21T22:29:41.4097325Z             }
2026-06-21T22:29:41.4097444Z           ]
2026-06-21T22:29:41.4097550Z         },
2026-06-21T22:29:41.4097650Z         "int": {
2026-06-21T22:29:41.4097764Z           "complete": false,
2026-06-21T22:29:41.4097869Z           "evidence": []
2026-06-21T22:29:41.4097974Z         },
2026-06-21T22:29:41.4098074Z         "unit": {
2026-06-21T22:29:41.4098189Z           "complete": true,
2026-06-21T22:29:41.4098289Z           "evidence": [
2026-06-21T22:29:41.4098388Z             {
2026-06-21T22:29:41.4098514Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4098623Z               "line": 10602
2026-06-21T22:29:41.4098722Z             },
2026-06-21T22:29:41.4098826Z             {
2026-06-21T22:29:41.4098949Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4099114Z               "line": 10629
2026-06-21T22:29:41.4099206Z             },
2026-06-21T22:29:41.4099292Z             {
2026-06-21T22:29:41.4099405Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4099516Z               "line": 10653
2026-06-21T22:29:41.4099611Z             }
2026-06-21T22:29:41.4099715Z           ]
2026-06-21T22:29:41.4099822Z         }
2026-06-21T22:29:41.4099916Z       }
2026-06-21T22:29:41.4100021Z     },
2026-06-21T22:29:41.4100112Z     {
2026-06-21T22:29:41.4100217Z       "id": "REQ-MIGRATE-1",
2026-06-21T22:29:41.4100393Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T22:29:41.4100498Z       "requiredStages": [],
2026-06-21T22:29:41.4100593Z       "stages": {
2026-06-21T22:29:41.4100683Z         "doc": {
2026-06-21T22:29:41.4100785Z           "complete": false,
2026-06-21T22:29:41.4100889Z           "evidence": []
2026-06-21T22:29:41.4100994Z         },
2026-06-21T22:29:41.4101095Z         "impl": {
2026-06-21T22:29:41.4101198Z           "complete": false,
2026-06-21T22:29:41.4101304Z           "evidence": []
2026-06-21T22:29:41.4101400Z         },
2026-06-21T22:29:41.4101499Z         "int": {
2026-06-21T22:29:41.4101607Z           "complete": false,
2026-06-21T22:29:41.4101823Z           "evidence": []
2026-06-21T22:29:41.4101908Z         },
2026-06-21T22:29:41.4102013Z         "unit": {
2026-06-21T22:29:41.4102124Z           "complete": false,
2026-06-21T22:29:41.4102223Z           "evidence": []
2026-06-21T22:29:41.4102323Z         }
2026-06-21T22:29:41.4102419Z       }
2026-06-21T22:29:41.4102514Z     },
2026-06-21T22:29:41.4102613Z     {
2026-06-21T22:29:41.4102719Z       "id": "REQ-MSG-1",
2026-06-21T22:29:41.4103167Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T22:29:41.4103411Z       "requiredStages": [
2026-06-21T22:29:41.4103505Z         "impl",
2026-06-21T22:29:41.4103606Z         "unit",
2026-06-21T22:29:41.4103702Z         "int"
2026-06-21T22:29:41.4103800Z       ],
2026-06-21T22:29:41.4103905Z       "stages": {
2026-06-21T22:29:41.4104010Z         "doc": {
2026-06-21T22:29:41.4104122Z           "complete": false,
2026-06-21T22:29:41.4104236Z           "evidence": []
2026-06-21T22:29:41.4104332Z         },
2026-06-21T22:29:41.4104437Z         "impl": {
2026-06-21T22:29:41.4104527Z           "complete": true,
2026-06-21T22:29:41.4104623Z           "evidence": [
2026-06-21T22:29:41.4104723Z             {
2026-06-21T22:29:41.4104851Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4104943Z               "line": 28
2026-06-21T22:29:41.4105042Z             },
2026-06-21T22:29:41.4105142Z             {
2026-06-21T22:29:41.4105272Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4105396Z               "line": 94
2026-06-21T22:29:41.4105510Z             },
2026-06-21T22:29:41.4105615Z             {
2026-06-21T22:29:41.4105748Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4105848Z               "line": 127
2026-06-21T22:29:41.4105935Z             },
2026-06-21T22:29:41.4106028Z             {
2026-06-21T22:29:41.4106188Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4106302Z               "line": 149
2026-06-21T22:29:41.4106401Z             },
2026-06-21T22:29:41.4106502Z             {
2026-06-21T22:29:41.4106630Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4106739Z               "line": 174
2026-06-21T22:29:41.4106829Z             },
2026-06-21T22:29:41.4106934Z             {
2026-06-21T22:29:41.4107065Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4107161Z               "line": 18
2026-06-21T22:29:41.4107266Z             },
2026-06-21T22:29:41.4107365Z             {
2026-06-21T22:29:41.4107490Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.4107590Z               "line": 13
2026-06-21T22:29:41.4107699Z             },
2026-06-21T22:29:41.4107805Z             {
2026-06-21T22:29:41.4107934Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.4108042Z               "line": 62
2026-06-21T22:29:41.4108153Z             },
2026-06-21T22:29:41.4108257Z             {
2026-06-21T22:29:41.4108381Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4108473Z               "line": 13
2026-06-21T22:29:41.4108581Z             }
2026-06-21T22:29:41.4108672Z           ]
2026-06-21T22:29:41.4108769Z         },
2026-06-21T22:29:41.4108868Z         "int": {
2026-06-21T22:29:41.4109040Z           "complete": true,
2026-06-21T22:29:41.4109132Z           "evidence": [
2026-06-21T22:29:41.4109229Z             {
2026-06-21T22:29:41.4109400Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T22:29:41.4109509Z               "line": 9
2026-06-21T22:29:41.4109618Z             },
2026-06-21T22:29:41.4109713Z             {
2026-06-21T22:29:41.4109861Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T22:29:41.4109970Z               "line": 56
2026-06-21T22:29:41.4110062Z             },
2026-06-21T22:29:41.4110162Z             {
2026-06-21T22:29:41.4110405Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T22:29:41.4110510Z               "line": 113
2026-06-21T22:29:41.4110609Z             }
2026-06-21T22:29:41.4110711Z           ]
2026-06-21T22:29:41.4110805Z         },
2026-06-21T22:29:41.4110910Z         "unit": {
2026-06-21T22:29:41.4111026Z           "complete": true,
2026-06-21T22:29:41.4111129Z           "evidence": [
2026-06-21T22:29:41.4111234Z             {
2026-06-21T22:29:41.4111364Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4111463Z               "line": 203
2026-06-21T22:29:41.4111559Z             },
2026-06-21T22:29:41.4111655Z             {
2026-06-21T22:29:41.4111887Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4111994Z               "line": 232
2026-06-21T22:29:41.4112097Z             },
2026-06-21T22:29:41.4112196Z             {
2026-06-21T22:29:41.4112325Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4112430Z               "line": 277
2026-06-21T22:29:41.4112534Z             },
2026-06-21T22:29:41.4112631Z             {
2026-06-21T22:29:41.4112759Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4112868Z               "line": 300
2026-06-21T22:29:41.4112960Z             },
2026-06-21T22:29:41.4113050Z             {
2026-06-21T22:29:41.4113178Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T22:29:41.4113279Z               "line": 325
2026-06-21T22:29:41.4113388Z             },
2026-06-21T22:29:41.4113483Z             {
2026-06-21T22:29:41.4113609Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4113712Z               "line": 204
2026-06-21T22:29:41.4113822Z             },
2026-06-21T22:29:41.4113923Z             {
2026-06-21T22:29:41.4114051Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4114156Z               "line": 237
2026-06-21T22:29:41.4114257Z             },
2026-06-21T22:29:41.4114347Z             {
2026-06-21T22:29:41.4114474Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4114574Z               "line": 251
2026-06-21T22:29:41.4114682Z             },
2026-06-21T22:29:41.4114763Z             {
2026-06-21T22:29:41.4114892Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4114987Z               "line": 263
2026-06-21T22:29:41.4115087Z             },
2026-06-21T22:29:41.4115188Z             {
2026-06-21T22:29:41.4115321Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.4115425Z               "line": 162
2026-06-21T22:29:41.4115532Z             },
2026-06-21T22:29:41.4115636Z             {
2026-06-21T22:29:41.4115760Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T22:29:41.4115865Z               "line": 242
2026-06-21T22:29:41.4115974Z             },
2026-06-21T22:29:41.4116089Z             {
2026-06-21T22:29:41.4116222Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4116322Z               "line": 134
2026-06-21T22:29:41.4116433Z             },
2026-06-21T22:29:41.4116528Z             {
2026-06-21T22:29:41.4116656Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4116767Z               "line": 153
2026-06-21T22:29:41.4116866Z             }
2026-06-21T22:29:41.4116966Z           ]
2026-06-21T22:29:41.4117062Z         }
2026-06-21T22:29:41.4117167Z       }
2026-06-21T22:29:41.4117265Z     },
2026-06-21T22:29:41.4117365Z     {
2026-06-21T22:29:41.4117475Z       "id": "REQ-MSG-2",
2026-06-21T22:29:41.4117769Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T22:29:41.4117893Z       "requiredStages": [
2026-06-21T22:29:41.4117992Z         "impl",
2026-06-21T22:29:41.4118099Z         "unit"
2026-06-21T22:29:41.4118198Z       ],
2026-06-21T22:29:41.4118307Z       "stages": {
2026-06-21T22:29:41.4118413Z         "doc": {
2026-06-21T22:29:41.4118523Z           "complete": false,
2026-06-21T22:29:41.4118631Z           "evidence": []
2026-06-21T22:29:41.4118822Z         },
2026-06-21T22:29:41.4118927Z         "impl": {
2026-06-21T22:29:41.4119090Z           "complete": true,
2026-06-21T22:29:41.4119203Z           "evidence": [
2026-06-21T22:29:41.4119310Z             {
2026-06-21T22:29:41.4119428Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4119537Z               "line": 11
2026-06-21T22:29:41.4119634Z             },
2026-06-21T22:29:41.4119734Z             {
2026-06-21T22:29:41.4119851Z               "path": "crates/spt/src/main.rs",
2026-06-21T22:29:41.4119956Z               "line": 8
2026-06-21T22:29:41.4120060Z             }
2026-06-21T22:29:41.4120154Z           ]
2026-06-21T22:29:41.4120360Z         },
2026-06-21T22:29:41.4120459Z         "int": {
2026-06-21T22:29:41.4120569Z           "complete": false,
2026-06-21T22:29:41.4120665Z           "evidence": []
2026-06-21T22:29:41.4120764Z         },
2026-06-21T22:29:41.4120859Z         "unit": {
2026-06-21T22:29:41.4120961Z           "complete": true,
2026-06-21T22:29:41.4121075Z           "evidence": [
2026-06-21T22:29:41.4121160Z             {
2026-06-21T22:29:41.4121276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4121379Z               "line": 7717
2026-06-21T22:29:41.4121475Z             },
2026-06-21T22:29:41.4121576Z             {
2026-06-21T22:29:41.4121694Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4121804Z               "line": 7759
2026-06-21T22:29:41.4121900Z             },
2026-06-21T22:29:41.4122004Z             {
2026-06-21T22:29:41.4122104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4122215Z               "line": 7808
2026-06-21T22:29:41.4122323Z             },
2026-06-21T22:29:41.4122424Z             {
2026-06-21T22:29:41.4122540Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4122643Z               "line": 7831
2026-06-21T22:29:41.4122737Z             },
2026-06-21T22:29:41.4122828Z             {
2026-06-21T22:29:41.4122953Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4123062Z               "line": 9807
2026-06-21T22:29:41.4123157Z             },
2026-06-21T22:29:41.4123253Z             {
2026-06-21T22:29:41.4123371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4123477Z               "line": 9816
2026-06-21T22:29:41.4123577Z             },
2026-06-21T22:29:41.4123681Z             {
2026-06-21T22:29:41.4123806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4123911Z               "line": 9830
2026-06-21T22:29:41.4124005Z             }
2026-06-21T22:29:41.4124097Z           ]
2026-06-21T22:29:41.4124192Z         }
2026-06-21T22:29:41.4124292Z       }
2026-06-21T22:29:41.4124397Z     },
2026-06-21T22:29:41.4124507Z     {
2026-06-21T22:29:41.4124606Z       "id": "REQ-MSG-3",
2026-06-21T22:29:41.4125001Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T22:29:41.4125116Z       "requiredStages": [
2026-06-21T22:29:41.4125224Z         "impl",
2026-06-21T22:29:41.4125323Z         "unit",
2026-06-21T22:29:41.4125424Z         "int"
2026-06-21T22:29:41.4125529Z       ],
2026-06-21T22:29:41.4125618Z       "stages": {
2026-06-21T22:29:41.4125724Z         "doc": {
2026-06-21T22:29:41.4125829Z           "complete": false,
2026-06-21T22:29:41.4125943Z           "evidence": []
2026-06-21T22:29:41.4126039Z         },
2026-06-21T22:29:41.4126149Z         "impl": {
2026-06-21T22:29:41.4126258Z           "complete": true,
2026-06-21T22:29:41.4126364Z           "evidence": [
2026-06-21T22:29:41.4126468Z             {
2026-06-21T22:29:41.4126596Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T22:29:41.4126707Z               "line": 19
2026-06-21T22:29:41.4126806Z             },
2026-06-21T22:29:41.4126906Z             {
2026-06-21T22:29:41.4127045Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4127154Z               "line": 21
2026-06-21T22:29:41.4127351Z             },
2026-06-21T22:29:41.4127454Z             {
2026-06-21T22:29:41.4127589Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4127685Z               "line": 48
2026-06-21T22:29:41.4127788Z             },
2026-06-21T22:29:41.4127892Z             {
2026-06-21T22:29:41.4128016Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4128119Z               "line": 174
2026-06-21T22:29:41.4128209Z             }
2026-06-21T22:29:41.4128314Z           ]
2026-06-21T22:29:41.4128415Z         },
2026-06-21T22:29:41.4128514Z         "int": {
2026-06-21T22:29:41.4128625Z           "complete": true,
2026-06-21T22:29:41.4128800Z           "evidence": [
2026-06-21T22:29:41.4128906Z             {
2026-06-21T22:29:41.4129125Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T22:29:41.4129230Z               "line": 10
2026-06-21T22:29:41.4129326Z             },
2026-06-21T22:29:41.4129430Z             {
2026-06-21T22:29:41.4129584Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T22:29:41.4129692Z               "line": 56
2026-06-21T22:29:41.4129792Z             }
2026-06-21T22:29:41.4129894Z           ]
2026-06-21T22:29:41.4129988Z         },
2026-06-21T22:29:41.4130088Z         "unit": {
2026-06-21T22:29:41.4130199Z           "complete": true,
2026-06-21T22:29:41.4130303Z           "evidence": [
2026-06-21T22:29:41.4130397Z             {
2026-06-21T22:29:41.4130516Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4130616Z               "line": 228
2026-06-21T22:29:41.4130719Z             },
2026-06-21T22:29:41.4130809Z             {
2026-06-21T22:29:41.4130944Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4131043Z               "line": 247
2026-06-21T22:29:41.4131138Z             },
2026-06-21T22:29:41.4131234Z             {
2026-06-21T22:29:41.4131343Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4131443Z               "line": 270
2026-06-21T22:29:41.4131535Z             }
2026-06-21T22:29:41.4131640Z           ]
2026-06-21T22:29:41.4131734Z         }
2026-06-21T22:29:41.4131836Z       }
2026-06-21T22:29:41.4131939Z     },
2026-06-21T22:29:41.4132035Z     {
2026-06-21T22:29:41.4132141Z       "id": "REQ-MSG-4",
2026-06-21T22:29:41.4132960Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T22:29:41.4133071Z       "requiredStages": [
2026-06-21T22:29:41.4133175Z         "impl",
2026-06-21T22:29:41.4133288Z         "unit",
2026-06-21T22:29:41.4133388Z         "int"
2026-06-21T22:29:41.4133484Z       ],
2026-06-21T22:29:41.4133593Z       "stages": {
2026-06-21T22:29:41.4133693Z         "doc": {
2026-06-21T22:29:41.4133794Z           "complete": false,
2026-06-21T22:29:41.4133907Z           "evidence": []
2026-06-21T22:29:41.4134013Z         },
2026-06-21T22:29:41.4134113Z         "impl": {
2026-06-21T22:29:41.4134222Z           "complete": true,
2026-06-21T22:29:41.4134328Z           "evidence": [
2026-06-21T22:29:41.4134428Z             {
2026-06-21T22:29:41.4134551Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4134662Z               "line": 19
2026-06-21T22:29:41.4134762Z             },
2026-06-21T22:29:41.4134862Z             {
2026-06-21T22:29:41.4134982Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4135086Z               "line": 46
2026-06-21T22:29:41.4135190Z             },
2026-06-21T22:29:41.4135281Z             {
2026-06-21T22:29:41.4135415Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4135519Z               "line": 532
2026-06-21T22:29:41.4135618Z             },
2026-06-21T22:29:41.4135718Z             {
2026-06-21T22:29:41.4135841Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4135969Z               "line": 3110
2026-06-21T22:29:41.4136183Z             }
2026-06-21T22:29:41.4136284Z           ]
2026-06-21T22:29:41.4136385Z         },
2026-06-21T22:29:41.4136484Z         "int": {
2026-06-21T22:29:41.4136584Z           "complete": true,
2026-06-21T22:29:41.4136690Z           "evidence": [
2026-06-21T22:29:41.4136799Z             {
2026-06-21T22:29:41.4136938Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T22:29:41.4137033Z               "line": 98
2026-06-21T22:29:41.4137132Z             },
2026-06-21T22:29:41.4137228Z             {
2026-06-21T22:29:41.4137362Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T22:29:41.4137596Z               "line": 128
2026-06-21T22:29:41.4137700Z             }
2026-06-21T22:29:41.4137795Z           ]
2026-06-21T22:29:41.4137892Z         },
2026-06-21T22:29:41.4137996Z         "unit": {
2026-06-21T22:29:41.4138106Z           "complete": true,
2026-06-21T22:29:41.4138212Z           "evidence": [
2026-06-21T22:29:41.4138315Z             {
2026-06-21T22:29:41.4138452Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4138553Z               "line": 68
2026-06-21T22:29:41.4138656Z             },
2026-06-21T22:29:41.4138745Z             {
2026-06-21T22:29:41.4138875Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4139046Z               "line": 79
2026-06-21T22:29:41.4139146Z             },
2026-06-21T22:29:41.4139247Z             {
2026-06-21T22:29:41.4139375Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4139481Z               "line": 90
2026-06-21T22:29:41.4139581Z             },
2026-06-21T22:29:41.4139680Z             {
2026-06-21T22:29:41.4139810Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4139909Z               "line": 151
2026-06-21T22:29:41.4140014Z             }
2026-06-21T22:29:41.4140110Z           ]
2026-06-21T22:29:41.4140215Z         }
2026-06-21T22:29:41.4140315Z       }
2026-06-21T22:29:41.4140415Z     },
2026-06-21T22:29:41.4140525Z     {
2026-06-21T22:29:41.4140624Z       "id": "REQ-MSG-5",
2026-06-21T22:29:41.4141346Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T22:29:41.4141446Z       "requiredStages": [
2026-06-21T22:29:41.4141542Z         "doc",
2026-06-21T22:29:41.4141646Z         "impl",
2026-06-21T22:29:41.4141752Z         "unit"
2026-06-21T22:29:41.4141852Z       ],
2026-06-21T22:29:41.4141951Z       "stages": {
2026-06-21T22:29:41.4142052Z         "doc": {
2026-06-21T22:29:41.4142156Z           "complete": true,
2026-06-21T22:29:41.4142261Z           "evidence": [
2026-06-21T22:29:41.4142348Z             {
2026-06-21T22:29:41.4142462Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4142571Z               "line": 231
2026-06-21T22:29:41.4142672Z             }
2026-06-21T22:29:41.4142781Z           ]
2026-06-21T22:29:41.4142876Z         },
2026-06-21T22:29:41.4142977Z         "impl": {
2026-06-21T22:29:41.4143082Z           "complete": true,
2026-06-21T22:29:41.4143187Z           "evidence": [
2026-06-21T22:29:41.4143292Z             {
2026-06-21T22:29:41.4143416Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.4143520Z               "line": 60
2026-06-21T22:29:41.4143617Z             },
2026-06-21T22:29:41.4143722Z             {
2026-06-21T22:29:41.4143853Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4143958Z               "line": 126
2026-06-21T22:29:41.4144064Z             },
2026-06-21T22:29:41.4144158Z             {
2026-06-21T22:29:41.4144292Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4144392Z               "line": 135
2026-06-21T22:29:41.4144491Z             },
2026-06-21T22:29:41.4144592Z             {
2026-06-21T22:29:41.4144726Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4144941Z               "line": 149
2026-06-21T22:29:41.4145040Z             },
2026-06-21T22:29:41.4145140Z             {
2026-06-21T22:29:41.4145265Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4148274Z               "line": 178
2026-06-21T22:29:41.4148394Z             },
2026-06-21T22:29:41.4148514Z             {
2026-06-21T22:29:41.4148637Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4148767Z               "line": 2802
2026-06-21T22:29:41.4148866Z             }
2026-06-21T22:29:41.4149022Z           ]
2026-06-21T22:29:41.4149118Z         },
2026-06-21T22:29:41.4149411Z         "int": {
2026-06-21T22:29:41.4149554Z           "complete": true,
2026-06-21T22:29:41.4149658Z           "evidence": [
2026-06-21T22:29:41.4149759Z             {
2026-06-21T22:29:41.4149906Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T22:29:41.4150007Z               "line": 19
2026-06-21T22:29:41.4150098Z             }
2026-06-21T22:29:41.4150193Z           ]
2026-06-21T22:29:41.4150292Z         },
2026-06-21T22:29:41.4150398Z         "unit": {
2026-06-21T22:29:41.4150507Z           "complete": true,
2026-06-21T22:29:41.4150607Z           "evidence": [
2026-06-21T22:29:41.4150704Z             {
2026-06-21T22:29:41.4150841Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.4150946Z               "line": 192
2026-06-21T22:29:41.4151052Z             },
2026-06-21T22:29:41.4151151Z             {
2026-06-21T22:29:41.4151290Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T22:29:41.4151390Z               "line": 154
2026-06-21T22:29:41.4151498Z             },
2026-06-21T22:29:41.4151593Z             {
2026-06-21T22:29:41.4151703Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4151816Z               "line": 122
2026-06-21T22:29:41.4151915Z             },
2026-06-21T22:29:41.4152011Z             {
2026-06-21T22:29:41.4152145Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4152254Z               "line": 452
2026-06-21T22:29:41.4152360Z             },
2026-06-21T22:29:41.4152455Z             {
2026-06-21T22:29:41.4152583Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4152689Z               "line": 501
2026-06-21T22:29:41.4152788Z             },
2026-06-21T22:29:41.4152879Z             {
2026-06-21T22:29:41.4153003Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4153108Z               "line": 517
2026-06-21T22:29:41.4153203Z             },
2026-06-21T22:29:41.4153304Z             {
2026-06-21T22:29:41.4153423Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4153527Z               "line": 536
2026-06-21T22:29:41.4153633Z             },
2026-06-21T22:29:41.4153727Z             {
2026-06-21T22:29:41.4153852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4153967Z               "line": 7660
2026-06-21T22:29:41.4154066Z             }
2026-06-21T22:29:41.4154162Z           ]
2026-06-21T22:29:41.4154263Z         }
2026-06-21T22:29:41.4154361Z       }
2026-06-21T22:29:41.4154456Z     },
2026-06-21T22:29:41.4154561Z     {
2026-06-21T22:29:41.4154671Z       "id": "REQ-MSG-6",
2026-06-21T22:29:41.4156291Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T22:29:41.4156416Z       "requiredStages": [
2026-06-21T22:29:41.4156512Z         "doc",
2026-06-21T22:29:41.4156611Z         "impl",
2026-06-21T22:29:41.4156719Z         "unit"
2026-06-21T22:29:41.4156806Z       ],
2026-06-21T22:29:41.4157022Z       "stages": {
2026-06-21T22:29:41.4157118Z         "doc": {
2026-06-21T22:29:41.4157223Z           "complete": true,
2026-06-21T22:29:41.4157328Z           "evidence": [
2026-06-21T22:29:41.4157433Z             {
2026-06-21T22:29:41.4157543Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4157642Z               "line": 234
2026-06-21T22:29:41.4157749Z             }
2026-06-21T22:29:41.4157838Z           ]
2026-06-21T22:29:41.4157933Z         },
2026-06-21T22:29:41.4158034Z         "impl": {
2026-06-21T22:29:41.4158148Z           "complete": true,
2026-06-21T22:29:41.4158252Z           "evidence": [
2026-06-21T22:29:41.4158439Z             {
2026-06-21T22:29:41.4158591Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4158698Z               "line": 177
2026-06-21T22:29:41.4158801Z             },
2026-06-21T22:29:41.4158901Z             {
2026-06-21T22:29:41.4159116Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4159221Z               "line": 428
2026-06-21T22:29:41.4159317Z             },
2026-06-21T22:29:41.4159417Z             {
2026-06-21T22:29:41.4159558Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4159668Z               "line": 451
2026-06-21T22:29:41.4159766Z             },
2026-06-21T22:29:41.4159866Z             {
2026-06-21T22:29:41.4159995Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.4160100Z               "line": 89
2026-06-21T22:29:41.4160199Z             },
2026-06-21T22:29:41.4160296Z             {
2026-06-21T22:29:41.4160443Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4160547Z               "line": 155
2026-06-21T22:29:41.4160644Z             }
2026-06-21T22:29:41.4160749Z           ]
2026-06-21T22:29:41.4160843Z         },
2026-06-21T22:29:41.4160945Z         "int": {
2026-06-21T22:29:41.4161049Z           "complete": false,
2026-06-21T22:29:41.4161153Z           "evidence": []
2026-06-21T22:29:41.4161260Z         },
2026-06-21T22:29:41.4161363Z         "unit": {
2026-06-21T22:29:41.4161468Z           "complete": true,
2026-06-21T22:29:41.4161570Z           "evidence": [
2026-06-21T22:29:41.4161678Z             {
2026-06-21T22:29:41.4161811Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4161918Z               "line": 1746
2026-06-21T22:29:41.4162007Z             },
2026-06-21T22:29:41.4162111Z             {
2026-06-21T22:29:41.4162235Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.4162338Z               "line": 219
2026-06-21T22:29:41.4162442Z             }
2026-06-21T22:29:41.4162548Z           ]
2026-06-21T22:29:41.4162653Z         }
2026-06-21T22:29:41.4162751Z       }
2026-06-21T22:29:41.4162858Z     },
2026-06-21T22:29:41.4162953Z     {
2026-06-21T22:29:41.4163057Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T22:29:41.4166719Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T22:29:41.4167010Z       "requiredStages": [
2026-06-21T22:29:41.4167119Z         "doc",
2026-06-21T22:29:41.4167209Z         "impl",
2026-06-21T22:29:41.4167309Z         "unit",
2026-06-21T22:29:41.4167409Z         "int"
2026-06-21T22:29:41.4167506Z       ],
2026-06-21T22:29:41.4167611Z       "stages": {
2026-06-21T22:29:41.4167707Z         "doc": {
2026-06-21T22:29:41.4167826Z           "complete": true,
2026-06-21T22:29:41.4167926Z           "evidence": [
2026-06-21T22:29:41.4168022Z             {
2026-06-21T22:29:41.4168260Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T22:29:41.4168479Z               "line": 47
2026-06-21T22:29:41.4168585Z             }
2026-06-21T22:29:41.4168680Z           ]
2026-06-21T22:29:41.4168784Z         },
2026-06-21T22:29:41.4168884Z         "impl": {
2026-06-21T22:29:41.4169066Z           "complete": true,
2026-06-21T22:29:41.4169171Z           "evidence": [
2026-06-21T22:29:41.4169267Z             {
2026-06-21T22:29:41.4169394Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4169500Z               "line": 20
2026-06-21T22:29:41.4169601Z             },
2026-06-21T22:29:41.4169699Z             {
2026-06-21T22:29:41.4169834Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4169940Z               "line": 33
2026-06-21T22:29:41.4170038Z             },
2026-06-21T22:29:41.4170137Z             {
2026-06-21T22:29:41.4170262Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4170364Z               "line": 47
2026-06-21T22:29:41.4170463Z             },
2026-06-21T22:29:41.4170565Z             {
2026-06-21T22:29:41.4170688Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4170783Z               "line": 58
2026-06-21T22:29:41.4170880Z             },
2026-06-21T22:29:41.4170970Z             {
2026-06-21T22:29:41.4171098Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4171200Z               "line": 14
2026-06-21T22:29:41.4171304Z             },
2026-06-21T22:29:41.4171403Z             {
2026-06-21T22:29:41.4171514Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4171623Z               "line": 27
2026-06-21T22:29:41.4171718Z             },
2026-06-21T22:29:41.4171825Z             {
2026-06-21T22:29:41.4171933Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4172038Z               "line": 40
2026-06-21T22:29:41.4172144Z             },
2026-06-21T22:29:41.4172233Z             {
2026-06-21T22:29:41.4172381Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.4172487Z               "line": 92
2026-06-21T22:29:41.4172590Z             },
2026-06-21T22:29:41.4172689Z             {
2026-06-21T22:29:41.4172823Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4172931Z               "line": 143
2026-06-21T22:29:41.4173026Z             },
2026-06-21T22:29:41.4173131Z             {
2026-06-21T22:29:41.4173260Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4173365Z               "line": 216
2026-06-21T22:29:41.4173466Z             },
2026-06-21T22:29:41.4173565Z             {
2026-06-21T22:29:41.4173694Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4173794Z               "line": 533
2026-06-21T22:29:41.4173890Z             },
2026-06-21T22:29:41.4173994Z             {
2026-06-21T22:29:41.4174123Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T22:29:41.4174219Z               "line": 78
2026-06-21T22:29:41.4174318Z             },
2026-06-21T22:29:41.4174424Z             {
2026-06-21T22:29:41.4174538Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4174648Z               "line": 3111
2026-06-21T22:29:41.4174748Z             }
2026-06-21T22:29:41.4174843Z           ]
2026-06-21T22:29:41.4174928Z         },
2026-06-21T22:29:41.4175186Z         "int": {
2026-06-21T22:29:41.4175297Z           "complete": true,
2026-06-21T22:29:41.4175402Z           "evidence": [
2026-06-21T22:29:41.4175505Z             {
2026-06-21T22:29:41.4175653Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T22:29:41.4175759Z               "line": 15
2026-06-21T22:29:41.4175843Z             }
2026-06-21T22:29:41.4175933Z           ]
2026-06-21T22:29:41.4176045Z         },
2026-06-21T22:29:41.4176134Z         "unit": {
2026-06-21T22:29:41.4176244Z           "complete": true,
2026-06-21T22:29:41.4176350Z           "evidence": [
2026-06-21T22:29:41.4176459Z             {
2026-06-21T22:29:41.4176688Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4176802Z               "line": 102
2026-06-21T22:29:41.4176902Z             },
2026-06-21T22:29:41.4176998Z             {
2026-06-21T22:29:41.4177126Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T22:29:41.4177222Z               "line": 137
2026-06-21T22:29:41.4177332Z             },
2026-06-21T22:29:41.4177431Z             {
2026-06-21T22:29:41.4177556Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4177666Z               "line": 98
2026-06-21T22:29:41.4177764Z             },
2026-06-21T22:29:41.4177869Z             {
2026-06-21T22:29:41.4177992Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4178095Z               "line": 106
2026-06-21T22:29:41.4178191Z             },
2026-06-21T22:29:41.4178286Z             {
2026-06-21T22:29:41.4178409Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4178505Z               "line": 113
2026-06-21T22:29:41.4178606Z             },
2026-06-21T22:29:41.4178706Z             {
2026-06-21T22:29:41.4178820Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T22:29:41.4178930Z               "line": 122
2026-06-21T22:29:41.4179082Z             }
2026-06-21T22:29:41.4179188Z           ]
2026-06-21T22:29:41.4179287Z         }
2026-06-21T22:29:41.4179396Z       }
2026-06-21T22:29:41.4179498Z     },
2026-06-21T22:29:41.4179597Z     {
2026-06-21T22:29:41.4179726Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T22:29:41.4184613Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T22:29:41.4184802Z       "requiredStages": [
2026-06-21T22:29:41.4184898Z         "doc",
2026-06-21T22:29:41.4185007Z         "impl",
2026-06-21T22:29:41.4185237Z         "unit",
2026-06-21T22:29:41.4185341Z         "int"
2026-06-21T22:29:41.4185441Z       ],
2026-06-21T22:29:41.4185547Z       "stages": {
2026-06-21T22:29:41.4185637Z         "doc": {
2026-06-21T22:29:41.4185751Z           "complete": true,
2026-06-21T22:29:41.4185857Z           "evidence": [
2026-06-21T22:29:41.4185957Z             {
2026-06-21T22:29:41.4186121Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T22:29:41.4186228Z               "line": 277
2026-06-21T22:29:41.4186333Z             },
2026-06-21T22:29:41.4186422Z             {
2026-06-21T22:29:41.4186542Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4186760Z               "line": 198
2026-06-21T22:29:41.4186857Z             }
2026-06-21T22:29:41.4186962Z           ]
2026-06-21T22:29:41.4187061Z         },
2026-06-21T22:29:41.4187167Z         "impl": {
2026-06-21T22:29:41.4187272Z           "complete": true,
2026-06-21T22:29:41.4187381Z           "evidence": [
2026-06-21T22:29:41.4187487Z             {
2026-06-21T22:29:41.4187619Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4187728Z               "line": 1103
2026-06-21T22:29:41.4187825Z             },
2026-06-21T22:29:41.4187920Z             {
2026-06-21T22:29:41.4188058Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4188164Z               "line": 23
2026-06-21T22:29:41.4188268Z             },
2026-06-21T22:29:41.4188367Z             {
2026-06-21T22:29:41.4188515Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4188618Z               "line": 91
2026-06-21T22:29:41.4188722Z             },
2026-06-21T22:29:41.4188818Z             {
2026-06-21T22:29:41.4189022Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4189118Z               "line": 239
2026-06-21T22:29:41.4189223Z             },
2026-06-21T22:29:41.4189313Z             {
2026-06-21T22:29:41.4189462Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4189590Z               "line": 287
2026-06-21T22:29:41.4189685Z             },
2026-06-21T22:29:41.4189782Z             {
2026-06-21T22:29:41.4189914Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4190014Z               "line": 311
2026-06-21T22:29:41.4190120Z             },
2026-06-21T22:29:41.4190220Z             {
2026-06-21T22:29:41.4190349Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4190458Z               "line": 60
2026-06-21T22:29:41.4190558Z             },
2026-06-21T22:29:41.4190654Z             {
2026-06-21T22:29:41.4190787Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4190896Z               "line": 889
2026-06-21T22:29:41.4190993Z             }
2026-06-21T22:29:41.4191098Z           ]
2026-06-21T22:29:41.4191196Z         },
2026-06-21T22:29:41.4191296Z         "int": {
2026-06-21T22:29:41.4191410Z           "complete": true,
2026-06-21T22:29:41.4191518Z           "evidence": [
2026-06-21T22:29:41.4191623Z             {
2026-06-21T22:29:41.4191776Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.4191885Z               "line": 1089
2026-06-21T22:29:41.4191991Z             },
2026-06-21T22:29:41.4192091Z             {
2026-06-21T22:29:41.4192257Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.4192358Z               "line": 1194
2026-06-21T22:29:41.4192467Z             },
2026-06-21T22:29:41.4192557Z             {
2026-06-21T22:29:41.4192714Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.4192824Z               "line": 1262
2026-06-21T22:29:41.4192920Z             },
2026-06-21T22:29:41.4193020Z             {
2026-06-21T22:29:41.4193173Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T22:29:41.4193278Z               "line": 1355
2026-06-21T22:29:41.4193381Z             }
2026-06-21T22:29:41.4193593Z           ]
2026-06-21T22:29:41.4193696Z         },
2026-06-21T22:29:41.4193796Z         "unit": {
2026-06-21T22:29:41.4193906Z           "complete": true,
2026-06-21T22:29:41.4194009Z           "evidence": [
2026-06-21T22:29:41.4194113Z             {
2026-06-21T22:29:41.4194242Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.4194342Z               "line": 270
2026-06-21T22:29:41.4194451Z             },
2026-06-21T22:29:41.4194543Z             {
2026-06-21T22:29:41.4194690Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4194785Z               "line": 350
2026-06-21T22:29:41.4194891Z             },
2026-06-21T22:29:41.4195090Z             {
2026-06-21T22:29:41.4195225Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4195334Z               "line": 381
2026-06-21T22:29:41.4195434Z             },
2026-06-21T22:29:41.4195540Z             {
2026-06-21T22:29:41.4195663Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4195783Z               "line": 411
2026-06-21T22:29:41.4195887Z             },
2026-06-21T22:29:41.4195982Z             {
2026-06-21T22:29:41.4196122Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T22:29:41.4196216Z               "line": 440
2026-06-21T22:29:41.4196306Z             },
2026-06-21T22:29:41.4196388Z             {
2026-06-21T22:29:41.4196512Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4196601Z               "line": 1181
2026-06-21T22:29:41.4196677Z             }
2026-06-21T22:29:41.4196763Z           ]
2026-06-21T22:29:41.4196845Z         }
2026-06-21T22:29:41.4196940Z       }
2026-06-21T22:29:41.4197020Z     },
2026-06-21T22:29:41.4197107Z     {
2026-06-21T22:29:41.4197203Z       "id": "REQ-NET-1",
2026-06-21T22:29:41.4197383Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T22:29:41.4197479Z       "requiredStages": [
2026-06-21T22:29:41.4197569Z         "impl",
2026-06-21T22:29:41.4197659Z         "unit",
2026-06-21T22:29:41.4197742Z         "int"
2026-06-21T22:29:41.4197832Z       ],
2026-06-21T22:29:41.4197917Z       "stages": {
2026-06-21T22:29:41.4197998Z         "doc": {
2026-06-21T22:29:41.4198085Z           "complete": false,
2026-06-21T22:29:41.4198175Z           "evidence": []
2026-06-21T22:29:41.4198265Z         },
2026-06-21T22:29:41.4198342Z         "impl": {
2026-06-21T22:29:41.4198433Z           "complete": true,
2026-06-21T22:29:41.4198527Z           "evidence": [
2026-06-21T22:29:41.4198608Z             {
2026-06-21T22:29:41.4198738Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4198823Z               "line": 54
2026-06-21T22:29:41.4198908Z             },
2026-06-21T22:29:41.4199051Z             {
2026-06-21T22:29:41.4199178Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4199272Z               "line": 594
2026-06-21T22:29:41.4199345Z             },
2026-06-21T22:29:41.4199441Z             {
2026-06-21T22:29:41.4199544Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T22:29:41.4199630Z               "line": 130
2026-06-21T22:29:41.4199712Z             },
2026-06-21T22:29:41.4199797Z             {
2026-06-21T22:29:41.4199921Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4200008Z               "line": 97
2026-06-21T22:29:41.4200083Z             },
2026-06-21T22:29:41.4200169Z             {
2026-06-21T22:29:41.4200294Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4200370Z               "line": 159
2026-06-21T22:29:41.4200460Z             },
2026-06-21T22:29:41.4200551Z             {
2026-06-21T22:29:41.4200666Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4200756Z               "line": 175
2026-06-21T22:29:41.4200841Z             },
2026-06-21T22:29:41.4200929Z             {
2026-06-21T22:29:41.4201032Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4201239Z               "line": 190
2026-06-21T22:29:41.4201324Z             },
2026-06-21T22:29:41.4201408Z             {
2026-06-21T22:29:41.4201529Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4201620Z               "line": 271
2026-06-21T22:29:41.4201700Z             },
2026-06-21T22:29:41.4201785Z             {
2026-06-21T22:29:41.4201895Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4201984Z               "line": 306
2026-06-21T22:29:41.4202068Z             },
2026-06-21T22:29:41.4202154Z             {
2026-06-21T22:29:41.4202260Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4202459Z               "line": 312
2026-06-21T22:29:41.4202536Z             },
2026-06-21T22:29:41.4202617Z             {
2026-06-21T22:29:41.4202731Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4202817Z               "line": 318
2026-06-21T22:29:41.4202909Z             },
2026-06-21T22:29:41.4202994Z             {
2026-06-21T22:29:41.4203122Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4203209Z               "line": 334
2026-06-21T22:29:41.4203289Z             },
2026-06-21T22:29:41.4203374Z             {
2026-06-21T22:29:41.4203481Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4203571Z               "line": 354
2026-06-21T22:29:41.4203641Z             },
2026-06-21T22:29:41.4203733Z             {
2026-06-21T22:29:41.4203853Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.4203942Z               "line": 35
2026-06-21T22:29:41.4204028Z             },
2026-06-21T22:29:41.4204111Z             {
2026-06-21T22:29:41.4204234Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.4204308Z               "line": 85
2026-06-21T22:29:41.4204393Z             },
2026-06-21T22:29:41.4204485Z             {
2026-06-21T22:29:41.4204593Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.4204687Z               "line": 138
2026-06-21T22:29:41.4204769Z             },
2026-06-21T22:29:41.4204860Z             {
2026-06-21T22:29:41.4204964Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4205050Z               "line": 2953
2026-06-21T22:29:41.4205137Z             },
2026-06-21T22:29:41.4205203Z             {
2026-06-21T22:29:41.4205317Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4205398Z               "line": 17
2026-06-21T22:29:41.4205480Z             }
2026-06-21T22:29:41.4205556Z           ]
2026-06-21T22:29:41.4205636Z         },
2026-06-21T22:29:41.4205733Z         "int": {
2026-06-21T22:29:41.4205822Z           "complete": true,
2026-06-21T22:29:41.4205917Z           "evidence": [
2026-06-21T22:29:41.4205998Z             {
2026-06-21T22:29:41.4206128Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4206214Z               "line": 341
2026-06-21T22:29:41.4206309Z             },
2026-06-21T22:29:41.4206391Z             {
2026-06-21T22:29:41.4206508Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4206600Z               "line": 675
2026-06-21T22:29:41.4206677Z             },
2026-06-21T22:29:41.4206758Z             {
2026-06-21T22:29:41.4206867Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4206958Z               "line": 973
2026-06-21T22:29:41.4207040Z             }
2026-06-21T22:29:41.4207119Z           ]
2026-06-21T22:29:41.4207204Z         },
2026-06-21T22:29:41.4207285Z         "unit": {
2026-06-21T22:29:41.4207381Z           "complete": true,
2026-06-21T22:29:41.4207467Z           "evidence": [
2026-06-21T22:29:41.4207557Z             {
2026-06-21T22:29:41.4207682Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4207768Z               "line": 651
2026-06-21T22:29:41.4207857Z             },
2026-06-21T22:29:41.4207934Z             {
2026-06-21T22:29:41.4208053Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4208249Z               "line": 686
2026-06-21T22:29:41.4208330Z             },
2026-06-21T22:29:41.4208406Z             {
2026-06-21T22:29:41.4208530Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4208617Z               "line": 940
2026-06-21T22:29:41.4208697Z             },
2026-06-21T22:29:41.4208787Z             {
2026-06-21T22:29:41.4208898Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T22:29:41.4209059Z               "line": 201
2026-06-21T22:29:41.4209145Z             },
2026-06-21T22:29:41.4209227Z             {
2026-06-21T22:29:41.4209458Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4209544Z               "line": 442
2026-06-21T22:29:41.4209630Z             },
2026-06-21T22:29:41.4209719Z             {
2026-06-21T22:29:41.4209842Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4209938Z               "line": 456
2026-06-21T22:29:41.4210028Z             },
2026-06-21T22:29:41.4210114Z             {
2026-06-21T22:29:41.4210220Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4210320Z               "line": 475
2026-06-21T22:29:41.4210410Z             },
2026-06-21T22:29:41.4210481Z             {
2026-06-21T22:29:41.4210606Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.4210691Z               "line": 120
2026-06-21T22:29:41.4210767Z             },
2026-06-21T22:29:41.4210850Z             {
2026-06-21T22:29:41.4210968Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T22:29:41.4211058Z               "line": 163
2026-06-21T22:29:41.4211144Z             },
2026-06-21T22:29:41.4211226Z             {
2026-06-21T22:29:41.4211344Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T22:29:41.4211430Z               "line": 530
2026-06-21T22:29:41.4211512Z             },
2026-06-21T22:29:41.4211602Z             {
2026-06-21T22:29:41.4211716Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4211799Z               "line": 616
2026-06-21T22:29:41.4211879Z             },
2026-06-21T22:29:41.4211955Z             {
2026-06-21T22:29:41.4212060Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4212147Z               "line": 1006
2026-06-21T22:29:41.4212227Z             }
2026-06-21T22:29:41.4212316Z           ]
2026-06-21T22:29:41.4212387Z         }
2026-06-21T22:29:41.4212464Z       }
2026-06-21T22:29:41.4212539Z     },
2026-06-21T22:29:41.4212624Z     {
2026-06-21T22:29:41.4212719Z       "id": "REQ-NET-2",
2026-06-21T22:29:41.4212906Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T22:29:41.4213009Z       "requiredStages": [
2026-06-21T22:29:41.4213087Z         "impl"
2026-06-21T22:29:41.4213178Z       ],
2026-06-21T22:29:41.4213263Z       "stages": {
2026-06-21T22:29:41.4213343Z         "doc": {
2026-06-21T22:29:41.4213435Z           "complete": false,
2026-06-21T22:29:41.4213535Z           "evidence": []
2026-06-21T22:29:41.4213629Z         },
2026-06-21T22:29:41.4213716Z         "impl": {
2026-06-21T22:29:41.4213807Z           "complete": true,
2026-06-21T22:29:41.4213893Z           "evidence": [
2026-06-21T22:29:41.4213983Z             {
2026-06-21T22:29:41.4214103Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.4214201Z               "line": 57
2026-06-21T22:29:41.4214302Z             },
2026-06-21T22:29:41.4214384Z             {
2026-06-21T22:29:41.4214507Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4214593Z               "line": 71
2026-06-21T22:29:41.4214685Z             },
2026-06-21T22:29:41.4214766Z             {
2026-06-21T22:29:41.4214883Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4214968Z               "line": 81
2026-06-21T22:29:41.4215059Z             },
2026-06-21T22:29:41.4215148Z             {
2026-06-21T22:29:41.4215262Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4215463Z               "line": 159
2026-06-21T22:29:41.4215543Z             },
2026-06-21T22:29:41.4215639Z             {
2026-06-21T22:29:41.4215758Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4215843Z               "line": 175
2026-06-21T22:29:41.4215934Z             },
2026-06-21T22:29:41.4216016Z             {
2026-06-21T22:29:41.4216140Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T22:29:41.4216230Z               "line": 190
2026-06-21T22:29:41.4216317Z             }
2026-06-21T22:29:41.4216406Z           ]
2026-06-21T22:29:41.4216487Z         },
2026-06-21T22:29:41.4216651Z         "int": {
2026-06-21T22:29:41.4216740Z           "complete": false,
2026-06-21T22:29:41.4216845Z           "evidence": []
2026-06-21T22:29:41.4216927Z         },
2026-06-21T22:29:41.4217017Z         "unit": {
2026-06-21T22:29:41.4217112Z           "complete": true,
2026-06-21T22:29:41.4217189Z           "evidence": [
2026-06-21T22:29:41.4217276Z             {
2026-06-21T22:29:41.4217383Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.4217479Z               "line": 402
2026-06-21T22:29:41.4217557Z             }
2026-06-21T22:29:41.4217647Z           ]
2026-06-21T22:29:41.4217731Z         }
2026-06-21T22:29:41.4217816Z       }
2026-06-21T22:29:41.4217903Z     },
2026-06-21T22:29:41.4217990Z     {
2026-06-21T22:29:41.4218093Z       "id": "REQ-NET-3",
2026-06-21T22:29:41.4218266Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T22:29:41.4218365Z       "requiredStages": [
2026-06-21T22:29:41.4218451Z         "impl",
2026-06-21T22:29:41.4218543Z         "unit"
2026-06-21T22:29:41.4218632Z       ],
2026-06-21T22:29:41.4218717Z       "stages": {
2026-06-21T22:29:41.4218809Z         "doc": {
2026-06-21T22:29:41.4218891Z           "complete": false,
2026-06-21T22:29:41.4219095Z           "evidence": []
2026-06-21T22:29:41.4219181Z         },
2026-06-21T22:29:41.4219266Z         "impl": {
2026-06-21T22:29:41.4219366Z           "complete": true,
2026-06-21T22:29:41.4219463Z           "evidence": [
2026-06-21T22:29:41.4219544Z             {
2026-06-21T22:29:41.4219657Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.4219753Z               "line": 39
2026-06-21T22:29:41.4219840Z             },
2026-06-21T22:29:41.4219919Z             {
2026-06-21T22:29:41.4220028Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.4220114Z               "line": 182
2026-06-21T22:29:41.4220204Z             },
2026-06-21T22:29:41.4220288Z             {
2026-06-21T22:29:41.4220402Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T22:29:41.4220503Z               "line": 333
2026-06-21T22:29:41.4220588Z             },
2026-06-21T22:29:41.4220674Z             {
2026-06-21T22:29:41.4220789Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T22:29:41.4220894Z               "line": 36
2026-06-21T22:29:41.4220979Z             },
2026-06-21T22:29:41.4221051Z             {
2026-06-21T22:29:41.4221180Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4221265Z               "line": 158
2026-06-21T22:29:41.4221351Z             },
2026-06-21T22:29:41.4221429Z             {
2026-06-21T22:29:41.4221557Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4221642Z               "line": 238
2026-06-21T22:29:41.4221724Z             },
2026-06-21T22:29:41.4221805Z             {
2026-06-21T22:29:41.4221919Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4222010Z               "line": 259
2026-06-21T22:29:41.4222091Z             },
2026-06-21T22:29:41.4222181Z             {
2026-06-21T22:29:41.4222300Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4222388Z               "line": 317
2026-06-21T22:29:41.4222472Z             },
2026-06-21T22:29:41.4222553Z             {
2026-06-21T22:29:41.4222792Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4222881Z               "line": 336
2026-06-21T22:29:41.4222962Z             },
2026-06-21T22:29:41.4223039Z             {
2026-06-21T22:29:41.4223155Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4223240Z               "line": 374
2026-06-21T22:29:41.4223322Z             },
2026-06-21T22:29:41.4223409Z             {
2026-06-21T22:29:41.4223532Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4223618Z               "line": 419
2026-06-21T22:29:41.4223704Z             },
2026-06-21T22:29:41.4223781Z             {
2026-06-21T22:29:41.4224019Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4224100Z               "line": 432
2026-06-21T22:29:41.4224194Z             },
2026-06-21T22:29:41.4224276Z             {
2026-06-21T22:29:41.4224400Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4224491Z               "line": 29
2026-06-21T22:29:41.4224581Z             },
2026-06-21T22:29:41.4224667Z             {
2026-06-21T22:29:41.4224791Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4224891Z               "line": 72
2026-06-21T22:29:41.4224973Z             },
2026-06-21T22:29:41.4225062Z             {
2026-06-21T22:29:41.4225177Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4225255Z               "line": 123
2026-06-21T22:29:41.4225335Z             }
2026-06-21T22:29:41.4225419Z           ]
2026-06-21T22:29:41.4225500Z         },
2026-06-21T22:29:41.4225581Z         "int": {
2026-06-21T22:29:41.4225676Z           "complete": false,
2026-06-21T22:29:41.4225774Z           "evidence": []
2026-06-21T22:29:41.4225855Z         },
2026-06-21T22:29:41.4225942Z         "unit": {
2026-06-21T22:29:41.4226042Z           "complete": true,
2026-06-21T22:29:41.4226132Z           "evidence": [
2026-06-21T22:29:41.4226214Z             {
2026-06-21T22:29:41.4229316Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.4229470Z               "line": 223
2026-06-21T22:29:41.4229560Z             },
2026-06-21T22:29:41.4229635Z             {
2026-06-21T22:29:41.4229756Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.4229860Z               "line": 351
2026-06-21T22:29:41.4229950Z             },
2026-06-21T22:29:41.4230033Z             {
2026-06-21T22:29:41.4230155Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T22:29:41.4230241Z               "line": 504
2026-06-21T22:29:41.4230322Z             },
2026-06-21T22:29:41.4230400Z             {
2026-06-21T22:29:41.4230527Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T22:29:41.4230612Z               "line": 93
2026-06-21T22:29:41.4230703Z             },
2026-06-21T22:29:41.4230788Z             {
2026-06-21T22:29:41.4230891Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T22:29:41.4230977Z               "line": 142
2026-06-21T22:29:41.4231054Z             },
2026-06-21T22:29:41.4231135Z             {
2026-06-21T22:29:41.4231262Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4231349Z               "line": 315
2026-06-21T22:29:41.4231435Z             },
2026-06-21T22:29:41.4231520Z             {
2026-06-21T22:29:41.4231640Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4231721Z               "line": 355
2026-06-21T22:29:41.4231811Z             },
2026-06-21T22:29:41.4231883Z             {
2026-06-21T22:29:41.4231994Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T22:29:41.4232084Z               "line": 494
2026-06-21T22:29:41.4232169Z             }
2026-06-21T22:29:41.4232255Z           ]
2026-06-21T22:29:41.4232328Z         }
2026-06-21T22:29:41.4232412Z       }
2026-06-21T22:29:41.4232508Z     },
2026-06-21T22:29:41.4232580Z     {
2026-06-21T22:29:41.4232684Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T22:29:41.4232914Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T22:29:41.4233161Z       "requiredStages": [
2026-06-21T22:29:41.4233243Z         "impl",
2026-06-21T22:29:41.4233333Z         "unit"
2026-06-21T22:29:41.4233418Z       ],
2026-06-21T22:29:41.4233498Z       "stages": {
2026-06-21T22:29:41.4233584Z         "doc": {
2026-06-21T22:29:41.4233673Z           "complete": false,
2026-06-21T22:29:41.4233759Z           "evidence": []
2026-06-21T22:29:41.4233844Z         },
2026-06-21T22:29:41.4233926Z         "impl": {
2026-06-21T22:29:41.4234012Z           "complete": true,
2026-06-21T22:29:41.4234097Z           "evidence": [
2026-06-21T22:29:41.4234312Z             {
2026-06-21T22:29:41.4234440Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4234527Z               "line": 60
2026-06-21T22:29:41.4234603Z             },
2026-06-21T22:29:41.4234693Z             {
2026-06-21T22:29:41.4234817Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4234908Z               "line": 68
2026-06-21T22:29:41.4234993Z             },
2026-06-21T22:29:41.4235079Z             {
2026-06-21T22:29:41.4235195Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4235270Z               "line": 86
2026-06-21T22:29:41.4235356Z             },
2026-06-21T22:29:41.4235447Z             {
2026-06-21T22:29:41.4235557Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4235646Z               "line": 120
2026-06-21T22:29:41.4235727Z             },
2026-06-21T22:29:41.4235810Z             {
2026-06-21T22:29:41.4235923Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4236017Z               "line": 127
2026-06-21T22:29:41.4236108Z             },
2026-06-21T22:29:41.4236194Z             {
2026-06-21T22:29:41.4236311Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4236401Z               "line": 143
2026-06-21T22:29:41.4236487Z             },
2026-06-21T22:29:41.4236579Z             {
2026-06-21T22:29:41.4236696Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T22:29:41.4236788Z               "line": 16
2026-06-21T22:29:41.4236864Z             }
2026-06-21T22:29:41.4236945Z           ]
2026-06-21T22:29:41.4237016Z         },
2026-06-21T22:29:41.4237103Z         "int": {
2026-06-21T22:29:41.4237198Z           "complete": false,
2026-06-21T22:29:41.4237288Z           "evidence": []
2026-06-21T22:29:41.4237379Z         },
2026-06-21T22:29:41.4237465Z         "unit": {
2026-06-21T22:29:41.4237560Z           "complete": true,
2026-06-21T22:29:41.4237650Z           "evidence": [
2026-06-21T22:29:41.4237733Z             {
2026-06-21T22:29:41.4237846Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4237932Z               "line": 199
2026-06-21T22:29:41.4238018Z             },
2026-06-21T22:29:41.4238100Z             {
2026-06-21T22:29:41.4238213Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4238309Z               "line": 218
2026-06-21T22:29:41.4238391Z             },
2026-06-21T22:29:41.4238471Z             {
2026-06-21T22:29:41.4238594Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4238682Z               "line": 234
2026-06-21T22:29:41.4238763Z             },
2026-06-21T22:29:41.4238851Z             {
2026-06-21T22:29:41.4239047Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T22:29:41.4239134Z               "line": 256
2026-06-21T22:29:41.4239218Z             },
2026-06-21T22:29:41.4239294Z             {
2026-06-21T22:29:41.4239424Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T22:29:41.4239518Z               "line": 124
2026-06-21T22:29:41.4239600Z             },
2026-06-21T22:29:41.4239677Z             {
2026-06-21T22:29:41.4239787Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T22:29:41.4239876Z               "line": 140
2026-06-21T22:29:41.4239958Z             },
2026-06-21T22:29:41.4240172Z             {
2026-06-21T22:29:41.4240283Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T22:29:41.4240373Z               "line": 155
2026-06-21T22:29:41.4240454Z             }
2026-06-21T22:29:41.4240534Z           ]
2026-06-21T22:29:41.4240612Z         }
2026-06-21T22:29:41.4240720Z       }
2026-06-21T22:29:41.4240801Z     },
2026-06-21T22:29:41.4240887Z     {
2026-06-21T22:29:41.4240970Z       "id": "REQ-NOTIF-1",
2026-06-21T22:29:41.4241325Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T22:29:41.4241427Z       "requiredStages": [
2026-06-21T22:29:41.4241609Z         "impl",
2026-06-21T22:29:41.4241691Z         "unit",
2026-06-21T22:29:41.4241770Z         "int"
2026-06-21T22:29:41.4241847Z       ],
2026-06-21T22:29:41.4241929Z       "stages": {
2026-06-21T22:29:41.4242010Z         "doc": {
2026-06-21T22:29:41.4242109Z           "complete": false,
2026-06-21T22:29:41.4242205Z           "evidence": []
2026-06-21T22:29:41.4242291Z         },
2026-06-21T22:29:41.4242372Z         "impl": {
2026-06-21T22:29:41.4242457Z           "complete": true,
2026-06-21T22:29:41.4242544Z           "evidence": [
2026-06-21T22:29:41.4242615Z             {
2026-06-21T22:29:41.4242733Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4242830Z               "line": 514
2026-06-21T22:29:41.4242911Z             },
2026-06-21T22:29:41.4242997Z             {
2026-06-21T22:29:41.4243101Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4243188Z               "line": 30
2026-06-21T22:29:41.4243273Z             },
2026-06-21T22:29:41.4243354Z             {
2026-06-21T22:29:41.4243469Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4243550Z               "line": 69
2026-06-21T22:29:41.4243635Z             },
2026-06-21T22:29:41.4243716Z             {
2026-06-21T22:29:41.4243827Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4243921Z               "line": 93
2026-06-21T22:29:41.4243997Z             },
2026-06-21T22:29:41.4244082Z             {
2026-06-21T22:29:41.4244183Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4244275Z               "line": 107
2026-06-21T22:29:41.4244356Z             },
2026-06-21T22:29:41.4244442Z             {
2026-06-21T22:29:41.4244553Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4244642Z               "line": 142
2026-06-21T22:29:41.4244733Z             },
2026-06-21T22:29:41.4244815Z             {
2026-06-21T22:29:41.4244933Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4245033Z               "line": 187
2026-06-21T22:29:41.4245116Z             },
2026-06-21T22:29:41.4245187Z             {
2026-06-21T22:29:41.4245315Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4245392Z               "line": 258
2026-06-21T22:29:41.4245478Z             },
2026-06-21T22:29:41.4245568Z             {
2026-06-21T22:29:41.4245672Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4245760Z               "line": 372
2026-06-21T22:29:41.4245839Z             },
2026-06-21T22:29:41.4245930Z             {
2026-06-21T22:29:41.4246041Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4246126Z               "line": 479
2026-06-21T22:29:41.4246211Z             },
2026-06-21T22:29:41.4246292Z             {
2026-06-21T22:29:41.4246417Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4246507Z               "line": 24
2026-06-21T22:29:41.4246587Z             },
2026-06-21T22:29:41.4246673Z             {
2026-06-21T22:29:41.4246786Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4246871Z               "line": 34
2026-06-21T22:29:41.4246956Z             },
2026-06-21T22:29:41.4247038Z             {
2026-06-21T22:29:41.4247162Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4247324Z               "line": 60
2026-06-21T22:29:41.4247415Z             },
2026-06-21T22:29:41.4247496Z             {
2026-06-21T22:29:41.4247610Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4247696Z               "line": 82
2026-06-21T22:29:41.4247782Z             },
2026-06-21T22:29:41.4247867Z             {
2026-06-21T22:29:41.4247978Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4248063Z               "line": 94
2026-06-21T22:29:41.4248140Z             },
2026-06-21T22:29:41.4248225Z             {
2026-06-21T22:29:41.4248331Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.4248502Z               "line": 96
2026-06-21T22:29:41.4248588Z             },
2026-06-21T22:29:41.4248674Z             {
2026-06-21T22:29:41.4248802Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T22:29:41.4248889Z               "line": 44
2026-06-21T22:29:41.4249045Z             },
2026-06-21T22:29:41.4249136Z             {
2026-06-21T22:29:41.4249257Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.4249346Z               "line": 20
2026-06-21T22:29:41.4249426Z             },
2026-06-21T22:29:41.4249511Z             {
2026-06-21T22:29:41.4249622Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.4249712Z               "line": 30
2026-06-21T22:29:41.4249792Z             },
2026-06-21T22:29:41.4249879Z             {
2026-06-21T22:29:41.4249993Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.4250079Z               "line": 50
2026-06-21T22:29:41.4250165Z             },
2026-06-21T22:29:41.4250251Z             {
2026-06-21T22:29:41.4250370Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4250455Z               "line": 28
2026-06-21T22:29:41.4250542Z             },
2026-06-21T22:29:41.4250628Z             {
2026-06-21T22:29:41.4250732Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4250828Z               "line": 126
2026-06-21T22:29:41.4250909Z             },
2026-06-21T22:29:41.4250984Z             {
2026-06-21T22:29:41.4251089Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4251181Z               "line": 161
2026-06-21T22:29:41.4251267Z             },
2026-06-21T22:29:41.4251347Z             {
2026-06-21T22:29:41.4251452Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4251539Z               "line": 202
2026-06-21T22:29:41.4251628Z             },
2026-06-21T22:29:41.4251714Z             {
2026-06-21T22:29:41.4251823Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4251922Z               "line": 213
2026-06-21T22:29:41.4252007Z             },
2026-06-21T22:29:41.4252092Z             {
2026-06-21T22:29:41.4252193Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4252279Z               "line": 238
2026-06-21T22:29:41.4252364Z             },
2026-06-21T22:29:41.4252441Z             {
2026-06-21T22:29:41.4252555Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4252631Z               "line": 261
2026-06-21T22:29:41.4252712Z             },
2026-06-21T22:29:41.4252790Z             {
2026-06-21T22:29:41.4252909Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4252993Z               "line": 86
2026-06-21T22:29:41.4253076Z             }
2026-06-21T22:29:41.4253166Z           ]
2026-06-21T22:29:41.4253247Z         },
2026-06-21T22:29:41.4253327Z         "int": {
2026-06-21T22:29:41.4253419Z           "complete": true,
2026-06-21T22:29:41.4253499Z           "evidence": [
2026-06-21T22:29:41.4253594Z             {
2026-06-21T22:29:41.4253710Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4253796Z               "line": 285
2026-06-21T22:29:41.4253875Z             },
2026-06-21T22:29:41.4253961Z             {
2026-06-21T22:29:41.4254073Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T22:29:41.4254257Z               "line": 145
2026-06-21T22:29:41.4254344Z             },
2026-06-21T22:29:41.4254426Z             {
2026-06-21T22:29:41.4254552Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4254637Z               "line": 684
2026-06-21T22:29:41.4254724Z             },
2026-06-21T22:29:41.4254803Z             {
2026-06-21T22:29:41.4254912Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4254998Z               "line": 1102
2026-06-21T22:29:41.4255079Z             }
2026-06-21T22:29:41.4255165Z           ]
2026-06-21T22:29:41.4255236Z         },
2026-06-21T22:29:41.4255408Z         "unit": {
2026-06-21T22:29:41.4255489Z           "complete": true,
2026-06-21T22:29:41.4255579Z           "evidence": [
2026-06-21T22:29:41.4255671Z             {
2026-06-21T22:29:41.4255776Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4255860Z               "line": 572
2026-06-21T22:29:41.4255947Z             },
2026-06-21T22:29:41.4256033Z             {
2026-06-21T22:29:41.4256147Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4256232Z               "line": 636
2026-06-21T22:29:41.4256320Z             },
2026-06-21T22:29:41.4256404Z             {
2026-06-21T22:29:41.4256519Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4256606Z               "line": 740
2026-06-21T22:29:41.4256705Z             },
2026-06-21T22:29:41.4256786Z             {
2026-06-21T22:29:41.4256902Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4256992Z               "line": 772
2026-06-21T22:29:41.4257076Z             },
2026-06-21T22:29:41.4257161Z             {
2026-06-21T22:29:41.4257271Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4257370Z               "line": 840
2026-06-21T22:29:41.4257450Z             },
2026-06-21T22:29:41.4257536Z             {
2026-06-21T22:29:41.4257646Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4257736Z               "line": 898
2026-06-21T22:29:41.4257821Z             },
2026-06-21T22:29:41.4257904Z             {
2026-06-21T22:29:41.4258018Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4258113Z               "line": 1173
2026-06-21T22:29:41.4258189Z             },
2026-06-21T22:29:41.4258275Z             {
2026-06-21T22:29:41.4258399Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4258485Z               "line": 157
2026-06-21T22:29:41.4258567Z             },
2026-06-21T22:29:41.4258652Z             {
2026-06-21T22:29:41.4258766Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4258853Z               "line": 250
2026-06-21T22:29:41.4258933Z             },
2026-06-21T22:29:41.4259095Z             {
2026-06-21T22:29:41.4259215Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T22:29:41.4259300Z               "line": 273
2026-06-21T22:29:41.4259381Z             },
2026-06-21T22:29:41.4259473Z             {
2026-06-21T22:29:41.4259586Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.4259667Z               "line": 355
2026-06-21T22:29:41.4259749Z             },
2026-06-21T22:29:41.4259836Z             {
2026-06-21T22:29:41.4259943Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T22:29:41.4260024Z               "line": 392
2026-06-21T22:29:41.4260105Z             },
2026-06-21T22:29:41.4260187Z             {
2026-06-21T22:29:41.4260320Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T22:29:41.4260405Z               "line": 131
2026-06-21T22:29:41.4260497Z             },
2026-06-21T22:29:41.4260583Z             {
2026-06-21T22:29:41.4260705Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.4260792Z               "line": 72
2026-06-21T22:29:41.4260878Z             },
2026-06-21T22:29:41.4260958Z             {
2026-06-21T22:29:41.4261159Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T22:29:41.4261245Z               "line": 97
2026-06-21T22:29:41.4261330Z             },
2026-06-21T22:29:41.4261418Z             {
2026-06-21T22:29:41.4261526Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4261612Z               "line": 379
2026-06-21T22:29:41.4261693Z             },
2026-06-21T22:29:41.4261775Z             {
2026-06-21T22:29:41.4261892Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4261974Z               "line": 417
2026-06-21T22:29:41.4262066Z             },
2026-06-21T22:29:41.4262151Z             {
2026-06-21T22:29:41.4262250Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4262454Z               "line": 433
2026-06-21T22:29:41.4262524Z             },
2026-06-21T22:29:41.4262609Z             {
2026-06-21T22:29:41.4262719Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4262807Z               "line": 472
2026-06-21T22:29:41.4262890Z             },
2026-06-21T22:29:41.4262977Z             {
2026-06-21T22:29:41.4263087Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4263173Z               "line": 489
2026-06-21T22:29:41.4263258Z             },
2026-06-21T22:29:41.4263340Z             {
2026-06-21T22:29:41.4263449Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4263534Z               "line": 517
2026-06-21T22:29:41.4263616Z             },
2026-06-21T22:29:41.4263698Z             {
2026-06-21T22:29:41.4263802Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T22:29:41.4263887Z               "line": 548
2026-06-21T22:29:41.4263979Z             },
2026-06-21T22:29:41.4264064Z             {
2026-06-21T22:29:41.4264169Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4264255Z               "line": 745
2026-06-21T22:29:41.4264342Z             }
2026-06-21T22:29:41.4264421Z           ]
2026-06-21T22:29:41.4264512Z         }
2026-06-21T22:29:41.4264600Z       }
2026-06-21T22:29:41.4264676Z     },
2026-06-21T22:29:41.4264750Z     {
2026-06-21T22:29:41.4264832Z       "id": "REQ-NOTIF-2",
2026-06-21T22:29:41.4265102Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T22:29:41.4265197Z       "requiredStages": [
2026-06-21T22:29:41.4265279Z         "doc",
2026-06-21T22:29:41.4265364Z         "impl",
2026-06-21T22:29:41.4265443Z         "unit",
2026-06-21T22:29:41.4265529Z         "int"
2026-06-21T22:29:41.4265611Z       ],
2026-06-21T22:29:41.4265697Z       "stages": {
2026-06-21T22:29:41.4265782Z         "doc": {
2026-06-21T22:29:41.4265878Z           "complete": true,
2026-06-21T22:29:41.4265968Z           "evidence": [
2026-06-21T22:29:41.4266049Z             {
2026-06-21T22:29:41.4266153Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4266250Z               "line": 509
2026-06-21T22:29:41.4266336Z             },
2026-06-21T22:29:41.4266416Z             {
2026-06-21T22:29:41.4266531Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4266621Z               "line": 123
2026-06-21T22:29:41.4266707Z             }
2026-06-21T22:29:41.4266793Z           ]
2026-06-21T22:29:41.4266875Z         },
2026-06-21T22:29:41.4266964Z         "impl": {
2026-06-21T22:29:41.4267050Z           "complete": true,
2026-06-21T22:29:41.4267142Z           "evidence": [
2026-06-21T22:29:41.4267228Z             {
2026-06-21T22:29:41.4267336Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4267427Z               "line": 287
2026-06-21T22:29:41.4267510Z             },
2026-06-21T22:29:41.4267594Z             {
2026-06-21T22:29:41.4267703Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4267802Z               "line": 301
2026-06-21T22:29:41.4267888Z             },
2026-06-21T22:29:41.4267958Z             {
2026-06-21T22:29:41.4268071Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4268154Z               "line": 326
2026-06-21T22:29:41.4268320Z             },
2026-06-21T22:29:41.4268396Z             {
2026-06-21T22:29:41.4268511Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4268606Z               "line": 239
2026-06-21T22:29:41.4268687Z             },
2026-06-21T22:29:41.4268769Z             {
2026-06-21T22:29:41.4268874Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4269060Z               "line": 95
2026-06-21T22:29:41.4269146Z             },
2026-06-21T22:29:41.4269236Z             {
2026-06-21T22:29:41.4269340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4269433Z               "line": 2225
2026-06-21T22:29:41.4269641Z             },
2026-06-21T22:29:41.4269723Z             {
2026-06-21T22:29:41.4269827Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4269908Z               "line": 2274
2026-06-21T22:29:41.4269994Z             },
2026-06-21T22:29:41.4270081Z             {
2026-06-21T22:29:41.4270184Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4270271Z               "line": 2353
2026-06-21T22:29:41.4270352Z             },
2026-06-21T22:29:41.4270433Z             {
2026-06-21T22:29:41.4270532Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4270622Z               "line": 2392
2026-06-21T22:29:41.4270704Z             }
2026-06-21T22:29:41.4270785Z           ]
2026-06-21T22:29:41.4270866Z         },
2026-06-21T22:29:41.4270951Z         "int": {
2026-06-21T22:29:41.4271042Z           "complete": true,
2026-06-21T22:29:41.4271128Z           "evidence": [
2026-06-21T22:29:41.4271209Z             {
2026-06-21T22:29:41.4271334Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4271414Z               "line": 810
2026-06-21T22:29:41.4271500Z             },
2026-06-21T22:29:41.4271585Z             {
2026-06-21T22:29:41.4271705Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4271786Z               "line": 1345
2026-06-21T22:29:41.4271871Z             }
2026-06-21T22:29:41.4271958Z           ]
2026-06-21T22:29:41.4272034Z         },
2026-06-21T22:29:41.4272115Z         "unit": {
2026-06-21T22:29:41.4272200Z           "complete": true,
2026-06-21T22:29:41.4272288Z           "evidence": [
2026-06-21T22:29:41.4272368Z             {
2026-06-21T22:29:41.4272487Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4272568Z               "line": 1022
2026-06-21T22:29:41.4272645Z             },
2026-06-21T22:29:41.4272720Z             {
2026-06-21T22:29:41.4272829Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4272910Z               "line": 1090
2026-06-21T22:29:41.4273010Z             },
2026-06-21T22:29:41.4273084Z             {
2026-06-21T22:29:41.4273189Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4273275Z               "line": 8210
2026-06-21T22:29:41.4273362Z             },
2026-06-21T22:29:41.4273437Z             {
2026-06-21T22:29:41.4273546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4273638Z               "line": 8265
2026-06-21T22:29:41.4273723Z             }
2026-06-21T22:29:41.4273803Z           ]
2026-06-21T22:29:41.4273886Z         }
2026-06-21T22:29:41.4273972Z       }
2026-06-21T22:29:41.4274052Z     },
2026-06-21T22:29:41.4274137Z     {
2026-06-21T22:29:41.4274229Z       "id": "REQ-PAIR-1",
2026-06-21T22:29:41.4274338Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T22:29:41.4274433Z       "requiredStages": [
2026-06-21T22:29:41.4274520Z         "impl",
2026-06-21T22:29:41.4274601Z         "unit",
2026-06-21T22:29:41.4274687Z         "int"
2026-06-21T22:29:41.4274772Z       ],
2026-06-21T22:29:41.4274854Z       "stages": {
2026-06-21T22:29:41.4274939Z         "doc": {
2026-06-21T22:29:41.4275040Z           "complete": false,
2026-06-21T22:29:41.4275121Z           "evidence": []
2026-06-21T22:29:41.4275212Z         },
2026-06-21T22:29:41.4275296Z         "impl": {
2026-06-21T22:29:41.4275382Z           "complete": true,
2026-06-21T22:29:41.4275574Z           "evidence": [
2026-06-21T22:29:41.4275663Z             {
2026-06-21T22:29:41.4275796Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4275882Z               "line": 27
2026-06-21T22:29:41.4275971Z             },
2026-06-21T22:29:41.4276061Z             {
2026-06-21T22:29:41.4276181Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4276262Z               "line": 88
2026-06-21T22:29:41.4276346Z             },
2026-06-21T22:29:41.4276438Z             {
2026-06-21T22:29:41.4276557Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4276738Z               "line": 110
2026-06-21T22:29:41.4276820Z             },
2026-06-21T22:29:41.4276911Z             {
2026-06-21T22:29:41.4277038Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4277125Z               "line": 153
2026-06-21T22:29:41.4277200Z             },
2026-06-21T22:29:41.4277295Z             {
2026-06-21T22:29:41.4277421Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4277506Z               "line": 182
2026-06-21T22:29:41.4277587Z             },
2026-06-21T22:29:41.4277668Z             {
2026-06-21T22:29:41.4277793Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4277882Z               "line": 29
2026-06-21T22:29:41.4277963Z             },
2026-06-21T22:29:41.4278050Z             {
2026-06-21T22:29:41.4278187Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T22:29:41.4278282Z               "line": 31
2026-06-21T22:29:41.4278367Z             },
2026-06-21T22:29:41.4278444Z             {
2026-06-21T22:29:41.4278570Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4278656Z               "line": 44
2026-06-21T22:29:41.4278738Z             },
2026-06-21T22:29:41.4278814Z             {
2026-06-21T22:29:41.4279029Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4279129Z               "line": 171
2026-06-21T22:29:41.4279209Z             },
2026-06-21T22:29:41.4279285Z             {
2026-06-21T22:29:41.4279400Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4279481Z               "line": 376
2026-06-21T22:29:41.4279567Z             }
2026-06-21T22:29:41.4279649Z           ]
2026-06-21T22:29:41.4279739Z         },
2026-06-21T22:29:41.4279820Z         "int": {
2026-06-21T22:29:41.4279910Z           "complete": true,
2026-06-21T22:29:41.4279988Z           "evidence": [
2026-06-21T22:29:41.4280068Z             {
2026-06-21T22:29:41.4280187Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4280273Z               "line": 645
2026-06-21T22:29:41.4280355Z             },
2026-06-21T22:29:41.4280439Z             {
2026-06-21T22:29:41.4280559Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4280641Z               "line": 887
2026-06-21T22:29:41.4280716Z             }
2026-06-21T22:29:41.4280802Z           ]
2026-06-21T22:29:41.4280889Z         },
2026-06-21T22:29:41.4280970Z         "unit": {
2026-06-21T22:29:41.4281049Z           "complete": true,
2026-06-21T22:29:41.4281144Z           "evidence": [
2026-06-21T22:29:41.4281216Z             {
2026-06-21T22:29:41.4281350Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4281430Z               "line": 236
2026-06-21T22:29:41.4281516Z             },
2026-06-21T22:29:41.4281607Z             {
2026-06-21T22:29:41.4281726Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T22:29:41.4281816Z               "line": 349
2026-06-21T22:29:41.4281884Z             },
2026-06-21T22:29:41.4281965Z             {
2026-06-21T22:29:41.4282088Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4282170Z               "line": 194
2026-06-21T22:29:41.4282261Z             },
2026-06-21T22:29:41.4282450Z             {
2026-06-21T22:29:41.4282580Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4282661Z               "line": 216
2026-06-21T22:29:41.4282751Z             },
2026-06-21T22:29:41.4282833Z             {
2026-06-21T22:29:41.4282961Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4283042Z               "line": 230
2026-06-21T22:29:41.4283123Z             },
2026-06-21T22:29:41.4283201Z             {
2026-06-21T22:29:41.4283318Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4283398Z               "line": 242
2026-06-21T22:29:41.4283484Z             },
2026-06-21T22:29:41.4283659Z             {
2026-06-21T22:29:41.4283782Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4283869Z               "line": 256
2026-06-21T22:29:41.4283954Z             },
2026-06-21T22:29:41.4284034Z             {
2026-06-21T22:29:41.4284164Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4284264Z               "line": 270
2026-06-21T22:29:41.4284345Z             },
2026-06-21T22:29:41.4284431Z             {
2026-06-21T22:29:41.4284556Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4284650Z               "line": 277
2026-06-21T22:29:41.4284736Z             },
2026-06-21T22:29:41.4284823Z             {
2026-06-21T22:29:41.4284951Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T22:29:41.4285041Z               "line": 295
2026-06-21T22:29:41.4285123Z             },
2026-06-21T22:29:41.4285204Z             {
2026-06-21T22:29:41.4285327Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4285415Z               "line": 968
2026-06-21T22:29:41.4285504Z             },
2026-06-21T22:29:41.4285585Z             {
2026-06-21T22:29:41.4285690Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4285781Z               "line": 1051
2026-06-21T22:29:41.4285871Z             },
2026-06-21T22:29:41.4285957Z             {
2026-06-21T22:29:41.4286072Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4286167Z               "line": 1121
2026-06-21T22:29:41.4286251Z             },
2026-06-21T22:29:41.4286332Z             {
2026-06-21T22:29:41.4286451Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4286536Z               "line": 1182
2026-06-21T22:29:41.4286625Z             },
2026-06-21T22:29:41.4286707Z             {
2026-06-21T22:29:41.4286827Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4286921Z               "line": 1238
2026-06-21T22:29:41.4286993Z             },
2026-06-21T22:29:41.4287080Z             {
2026-06-21T22:29:41.4287198Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4287279Z               "line": 1457
2026-06-21T22:29:41.4287361Z             }
2026-06-21T22:29:41.4287441Z           ]
2026-06-21T22:29:41.4287536Z         }
2026-06-21T22:29:41.4287622Z       }
2026-06-21T22:29:41.4287699Z     },
2026-06-21T22:29:41.4287784Z     {
2026-06-21T22:29:41.4287879Z       "id": "REQ-PAIR-2",
2026-06-21T22:29:41.4288019Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T22:29:41.4288113Z       "requiredStages": [],
2026-06-21T22:29:41.4288199Z       "stages": {
2026-06-21T22:29:41.4288272Z         "doc": {
2026-06-21T22:29:41.4288372Z           "complete": false,
2026-06-21T22:29:41.4288456Z           "evidence": []
2026-06-21T22:29:41.4288548Z         },
2026-06-21T22:29:41.4288625Z         "impl": {
2026-06-21T22:29:41.4288710Z           "complete": false,
2026-06-21T22:29:41.4288799Z           "evidence": []
2026-06-21T22:29:41.4288875Z         },
2026-06-21T22:29:41.4289051Z         "int": {
2026-06-21T22:29:41.4289144Z           "complete": false,
2026-06-21T22:29:41.4289241Z           "evidence": []
2026-06-21T22:29:41.4289322Z         },
2026-06-21T22:29:41.4289526Z         "unit": {
2026-06-21T22:29:41.4289623Z           "complete": false,
2026-06-21T22:29:41.4289699Z           "evidence": []
2026-06-21T22:29:41.4289788Z         }
2026-06-21T22:29:41.4289870Z       }
2026-06-21T22:29:41.4289956Z     },
2026-06-21T22:29:41.4290042Z     {
2026-06-21T22:29:41.4290127Z       "id": "REQ-PAIR-3",
2026-06-21T22:29:41.4290266Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T22:29:41.4290351Z       "requiredStages": [
2026-06-21T22:29:41.4290442Z         "impl",
2026-06-21T22:29:41.4290524Z         "unit"
2026-06-21T22:29:41.4290605Z       ],
2026-06-21T22:29:41.4290695Z       "stages": {
2026-06-21T22:29:41.4290891Z         "doc": {
2026-06-21T22:29:41.4290985Z           "complete": false,
2026-06-21T22:29:41.4291071Z           "evidence": []
2026-06-21T22:29:41.4291158Z         },
2026-06-21T22:29:41.4291235Z         "impl": {
2026-06-21T22:29:41.4291328Z           "complete": true,
2026-06-21T22:29:41.4294195Z           "evidence": [
2026-06-21T22:29:41.4294318Z             {
2026-06-21T22:29:41.4294444Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4294529Z               "line": 3259
2026-06-21T22:29:41.4294609Z             },
2026-06-21T22:29:41.4294696Z             {
2026-06-21T22:29:41.4294801Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4294886Z               "line": 3328
2026-06-21T22:29:41.4294967Z             },
2026-06-21T22:29:41.4295058Z             {
2026-06-21T22:29:41.4295158Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4295253Z               "line": 3709
2026-06-21T22:29:41.4295331Z             },
2026-06-21T22:29:41.4295421Z             {
2026-06-21T22:29:41.4295530Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4295616Z               "line": 4961
2026-06-21T22:29:41.4295702Z             }
2026-06-21T22:29:41.4295788Z           ]
2026-06-21T22:29:41.4295873Z         },
2026-06-21T22:29:41.4295960Z         "int": {
2026-06-21T22:29:41.4296064Z           "complete": false,
2026-06-21T22:29:41.4296155Z           "evidence": []
2026-06-21T22:29:41.4296236Z         },
2026-06-21T22:29:41.4296336Z         "unit": {
2026-06-21T22:29:41.4296431Z           "complete": true,
2026-06-21T22:29:41.4296522Z           "evidence": [
2026-06-21T22:29:41.4296604Z             {
2026-06-21T22:29:41.4296713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4296807Z               "line": 9964
2026-06-21T22:29:41.4296888Z             },
2026-06-21T22:29:41.4296973Z             {
2026-06-21T22:29:41.4297072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4297157Z               "line": 10179
2026-06-21T22:29:41.4297243Z             },
2026-06-21T22:29:41.4297330Z             {
2026-06-21T22:29:41.4297434Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4297515Z               "line": 10838
2026-06-21T22:29:41.4297611Z             },
2026-06-21T22:29:41.4297692Z             {
2026-06-21T22:29:41.4297795Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4297888Z               "line": 10857
2026-06-21T22:29:41.4297968Z             },
2026-06-21T22:29:41.4298054Z             {
2026-06-21T22:29:41.4298154Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4298240Z               "line": 10881
2026-06-21T22:29:41.4298330Z             },
2026-06-21T22:29:41.4298416Z             {
2026-06-21T22:29:41.4298512Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4298598Z               "line": 10900
2026-06-21T22:29:41.4298682Z             },
2026-06-21T22:29:41.4298769Z             {
2026-06-21T22:29:41.4298865Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4299036Z               "line": 10913
2026-06-21T22:29:41.4299122Z             },
2026-06-21T22:29:41.4299204Z             {
2026-06-21T22:29:41.4299312Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4299407Z               "line": 10922
2026-06-21T22:29:41.4299483Z             }
2026-06-21T22:29:41.4299728Z           ]
2026-06-21T22:29:41.4299805Z         }
2026-06-21T22:29:41.4299896Z       }
2026-06-21T22:29:41.4299972Z     },
2026-06-21T22:29:41.4300057Z     {
2026-06-21T22:29:41.4300144Z       "id": "REQ-PAIR-4",
2026-06-21T22:29:41.4300249Z       "title": "Subnet naming on first pairing",
2026-06-21T22:29:41.4300348Z       "requiredStages": [
2026-06-21T22:29:41.4300430Z         "impl",
2026-06-21T22:29:41.4300511Z         "unit"
2026-06-21T22:29:41.4300602Z       ],
2026-06-21T22:29:41.4300682Z       "stages": {
2026-06-21T22:29:41.4300764Z         "doc": {
2026-06-21T22:29:41.4300850Z           "complete": false,
2026-06-21T22:29:41.4300936Z           "evidence": []
2026-06-21T22:29:41.4301113Z         },
2026-06-21T22:29:41.4301193Z         "impl": {
2026-06-21T22:29:41.4301279Z           "complete": true,
2026-06-21T22:29:41.4301369Z           "evidence": [
2026-06-21T22:29:41.4301461Z             {
2026-06-21T22:29:41.4301579Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T22:29:41.4301694Z               "line": 174
2026-06-21T22:29:41.4301776Z             }
2026-06-21T22:29:41.4301860Z           ]
2026-06-21T22:29:41.4301946Z         },
2026-06-21T22:29:41.4302033Z         "int": {
2026-06-21T22:29:41.4302128Z           "complete": false,
2026-06-21T22:29:41.4302207Z           "evidence": []
2026-06-21T22:29:41.4302293Z         },
2026-06-21T22:29:41.4302374Z         "unit": {
2026-06-21T22:29:41.4302471Z           "complete": true,
2026-06-21T22:29:41.4302550Z           "evidence": [
2026-06-21T22:29:41.4302636Z             {
2026-06-21T22:29:41.4302761Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4302846Z               "line": 1294
2026-06-21T22:29:41.4302937Z             }
2026-06-21T22:29:41.4303019Z           ]
2026-06-21T22:29:41.4303104Z         }
2026-06-21T22:29:41.4303189Z       }
2026-06-21T22:29:41.4303275Z     },
2026-06-21T22:29:41.4303362Z     {
2026-06-21T22:29:41.4303456Z       "id": "REQ-PAIR-5",
2026-06-21T22:29:41.4303771Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T22:29:41.4303852Z       "requiredStages": [
2026-06-21T22:29:41.4303944Z         "impl",
2026-06-21T22:29:41.4304025Z         "unit",
2026-06-21T22:29:41.4304109Z         "int"
2026-06-21T22:29:41.4304195Z       ],
2026-06-21T22:29:41.4304282Z       "stages": {
2026-06-21T22:29:41.4304363Z         "doc": {
2026-06-21T22:29:41.4304448Z           "complete": false,
2026-06-21T22:29:41.4304552Z           "evidence": []
2026-06-21T22:29:41.4304624Z         },
2026-06-21T22:29:41.4304708Z         "impl": {
2026-06-21T22:29:41.4304808Z           "complete": true,
2026-06-21T22:29:41.4304898Z           "evidence": [
2026-06-21T22:29:41.4304979Z             {
2026-06-21T22:29:41.4305113Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4305193Z               "line": 44
2026-06-21T22:29:41.4305280Z             },
2026-06-21T22:29:41.4305366Z             {
2026-06-21T22:29:41.4305494Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4305581Z               "line": 96
2026-06-21T22:29:41.4305661Z             },
2026-06-21T22:29:41.4305741Z             {
2026-06-21T22:29:41.4305862Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4305952Z               "line": 107
2026-06-21T22:29:41.4306038Z             },
2026-06-21T22:29:41.4306137Z             {
2026-06-21T22:29:41.4306286Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4306381Z               "line": 124
2026-06-21T22:29:41.4306466Z             },
2026-06-21T22:29:41.4306554Z             {
2026-06-21T22:29:41.4306676Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4306767Z               "line": 155
2026-06-21T22:29:41.4306854Z             },
2026-06-21T22:29:41.4306939Z             {
2026-06-21T22:29:41.4307058Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4307240Z               "line": 195
2026-06-21T22:29:41.4307325Z             },
2026-06-21T22:29:41.4307409Z             {
2026-06-21T22:29:41.4307534Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4307618Z               "line": 251
2026-06-21T22:29:41.4307703Z             },
2026-06-21T22:29:41.4307789Z             {
2026-06-21T22:29:41.4307933Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4308022Z               "line": 33
2026-06-21T22:29:41.4308113Z             },
2026-06-21T22:29:41.4308195Z             {
2026-06-21T22:29:41.4308332Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4308486Z               "line": 45
2026-06-21T22:29:41.4308571Z             },
2026-06-21T22:29:41.4308657Z             {
2026-06-21T22:29:41.4308787Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4308867Z               "line": 59
2026-06-21T22:29:41.4309029Z             },
2026-06-21T22:29:41.4309111Z             {
2026-06-21T22:29:41.4309238Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4309329Z               "line": 376
2026-06-21T22:29:41.4309416Z             }
2026-06-21T22:29:41.4309506Z           ]
2026-06-21T22:29:41.4309591Z         },
2026-06-21T22:29:41.4309688Z         "int": {
2026-06-21T22:29:41.4309778Z           "complete": true,
2026-06-21T22:29:41.4309868Z           "evidence": [
2026-06-21T22:29:41.4309953Z             {
2026-06-21T22:29:41.4310077Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4310175Z               "line": 887
2026-06-21T22:29:41.4310260Z             },
2026-06-21T22:29:41.4310341Z             {
2026-06-21T22:29:41.4310471Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4310551Z               "line": 342
2026-06-21T22:29:41.4310637Z             }
2026-06-21T22:29:41.4310719Z           ]
2026-06-21T22:29:41.4310819Z         },
2026-06-21T22:29:41.4310899Z         "unit": {
2026-06-21T22:29:41.4311000Z           "complete": true,
2026-06-21T22:29:41.4311091Z           "evidence": [
2026-06-21T22:29:41.4311176Z             {
2026-06-21T22:29:41.4311305Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4311386Z               "line": 293
2026-06-21T22:29:41.4311466Z             },
2026-06-21T22:29:41.4311547Z             {
2026-06-21T22:29:41.4311668Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4311758Z               "line": 304
2026-06-21T22:29:41.4311834Z             },
2026-06-21T22:29:41.4311920Z             {
2026-06-21T22:29:41.4312035Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4312124Z               "line": 406
2026-06-21T22:29:41.4312215Z             },
2026-06-21T22:29:41.4312288Z             {
2026-06-21T22:29:41.4312420Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4312506Z               "line": 72
2026-06-21T22:29:41.4312593Z             },
2026-06-21T22:29:41.4312674Z             {
2026-06-21T22:29:41.4312810Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4312906Z               "line": 82
2026-06-21T22:29:41.4312988Z             },
2026-06-21T22:29:41.4313073Z             {
2026-06-21T22:29:41.4313196Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4313283Z               "line": 100
2026-06-21T22:29:41.4313369Z             },
2026-06-21T22:29:41.4313449Z             {
2026-06-21T22:29:41.4313579Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4313664Z               "line": 110
2026-06-21T22:29:41.4313754Z             },
2026-06-21T22:29:41.4313826Z             {
2026-06-21T22:29:41.4313955Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T22:29:41.4314041Z               "line": 125
2026-06-21T22:29:41.4314228Z             },
2026-06-21T22:29:41.4314317Z             {
2026-06-21T22:29:41.4314441Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4314533Z               "line": 1044
2026-06-21T22:29:41.4314618Z             },
2026-06-21T22:29:41.4314703Z             {
2026-06-21T22:29:41.4314823Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4314910Z               "line": 1110
2026-06-21T22:29:41.4314993Z             },
2026-06-21T22:29:41.4315079Z             {
2026-06-21T22:29:41.4315203Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4315382Z               "line": 1357
2026-06-21T22:29:41.4315477Z             }
2026-06-21T22:29:41.4315559Z           ]
2026-06-21T22:29:41.4315635Z         }
2026-06-21T22:29:41.4315720Z       }
2026-06-21T22:29:41.4315797Z     },
2026-06-21T22:29:41.4315883Z     {
2026-06-21T22:29:41.4315968Z       "id": "REQ-PAIR-6",
2026-06-21T22:29:41.4316245Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T22:29:41.4316345Z       "requiredStages": [
2026-06-21T22:29:41.4316427Z         "impl",
2026-06-21T22:29:41.4316513Z         "unit"
2026-06-21T22:29:41.4316594Z       ],
2026-06-21T22:29:41.4316688Z       "stages": {
2026-06-21T22:29:41.4316770Z         "doc": {
2026-06-21T22:29:41.4316865Z           "complete": false,
2026-06-21T22:29:41.4316955Z           "evidence": []
2026-06-21T22:29:41.4317031Z         },
2026-06-21T22:29:41.4317104Z         "impl": {
2026-06-21T22:29:41.4317184Z           "complete": true,
2026-06-21T22:29:41.4317284Z           "evidence": [
2026-06-21T22:29:41.4317371Z             {
2026-06-21T22:29:41.4317476Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4317560Z               "line": 3328
2026-06-21T22:29:41.4317642Z             },
2026-06-21T22:29:41.4317719Z             {
2026-06-21T22:29:41.4317823Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4317937Z               "line": 3709
2026-06-21T22:29:41.4318022Z             },
2026-06-21T22:29:41.4318108Z             {
2026-06-21T22:29:41.4318225Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.4318305Z               "line": 18
2026-06-21T22:29:41.4318392Z             },
2026-06-21T22:29:41.4318479Z             {
2026-06-21T22:29:41.4318578Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.4318664Z               "line": 49
2026-06-21T22:29:41.4318750Z             },
2026-06-21T22:29:41.4318836Z             {
2026-06-21T22:29:41.4318930Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.4319098Z               "line": 318
2026-06-21T22:29:41.4319183Z             }
2026-06-21T22:29:41.4319259Z           ]
2026-06-21T22:29:41.4319337Z         },
2026-06-21T22:29:41.4319427Z         "int": {
2026-06-21T22:29:41.4319527Z           "complete": false,
2026-06-21T22:29:41.4319618Z           "evidence": []
2026-06-21T22:29:41.4319713Z         },
2026-06-21T22:29:41.4319780Z         "unit": {
2026-06-21T22:29:41.4319870Z           "complete": true,
2026-06-21T22:29:41.4319952Z           "evidence": [
2026-06-21T22:29:41.4320038Z             {
2026-06-21T22:29:41.4320146Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4320228Z               "line": 10935
2026-06-21T22:29:41.4320311Z             },
2026-06-21T22:29:41.4320390Z             {
2026-06-21T22:29:41.4320489Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4320565Z               "line": 10952
2026-06-21T22:29:41.4320656Z             },
2026-06-21T22:29:41.4320735Z             {
2026-06-21T22:29:41.4320844Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.4320930Z               "line": 383
2026-06-21T22:29:41.4321012Z             },
2026-06-21T22:29:41.4321092Z             {
2026-06-21T22:29:41.4321202Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T22:29:41.4321417Z               "line": 392
2026-06-21T22:29:41.4321507Z             }
2026-06-21T22:29:41.4321584Z           ]
2026-06-21T22:29:41.4321670Z         }
2026-06-21T22:29:41.4321750Z       }
2026-06-21T22:29:41.4321836Z     },
2026-06-21T22:29:41.4321913Z     {
2026-06-21T22:29:41.4322008Z       "id": "REQ-PAIR-7",
2026-06-21T22:29:41.4322160Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T22:29:41.4322247Z       "requiredStages": [],
2026-06-21T22:29:41.4322337Z       "stages": {
2026-06-21T22:29:41.4322413Z         "doc": {
2026-06-21T22:29:41.4322499Z           "complete": false,
2026-06-21T22:29:41.4322590Z           "evidence": []
2026-06-21T22:29:41.4322770Z         },
2026-06-21T22:29:41.4322853Z         "impl": {
2026-06-21T22:29:41.4322938Z           "complete": false,
2026-06-21T22:29:41.4323018Z           "evidence": []
2026-06-21T22:29:41.4323105Z         },
2026-06-21T22:29:41.4323192Z         "int": {
2026-06-21T22:29:41.4323272Z           "complete": false,
2026-06-21T22:29:41.4323370Z           "evidence": []
2026-06-21T22:29:41.4323456Z         },
2026-06-21T22:29:41.4323533Z         "unit": {
2026-06-21T22:29:41.4323629Z           "complete": false,
2026-06-21T22:29:41.4323718Z           "evidence": []
2026-06-21T22:29:41.4323795Z         }
2026-06-21T22:29:41.4323882Z       }
2026-06-21T22:29:41.4323967Z     },
2026-06-21T22:29:41.4324047Z     {
2026-06-21T22:29:41.4324134Z       "id": "REQ-PAIR-8",
2026-06-21T22:29:41.4325507Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T22:29:41.4325606Z       "requiredStages": [
2026-06-21T22:29:41.4325696Z         "impl",
2026-06-21T22:29:41.4325797Z         "unit"
2026-06-21T22:29:41.4325866Z       ],
2026-06-21T22:29:41.4325952Z       "stages": {
2026-06-21T22:29:41.4326038Z         "doc": {
2026-06-21T22:29:41.4326133Z           "complete": false,
2026-06-21T22:29:41.4326214Z           "evidence": []
2026-06-21T22:29:41.4326299Z         },
2026-06-21T22:29:41.4326390Z         "impl": {
2026-06-21T22:29:41.4326491Z           "complete": true,
2026-06-21T22:29:41.4326585Z           "evidence": [
2026-06-21T22:29:41.4326672Z             {
2026-06-21T22:29:41.4326800Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4326890Z               "line": 577
2026-06-21T22:29:41.4326992Z             },
2026-06-21T22:29:41.4327078Z             {
2026-06-21T22:29:41.4327200Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4327291Z               "line": 22
2026-06-21T22:29:41.4327378Z             },
2026-06-21T22:29:41.4327468Z             {
2026-06-21T22:29:41.4327587Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4327684Z               "line": 76
2026-06-21T22:29:41.4327763Z             },
2026-06-21T22:29:41.4327849Z             {
2026-06-21T22:29:41.4327969Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4328060Z               "line": 127
2026-06-21T22:29:41.4328140Z             }
2026-06-21T22:29:41.4328231Z           ]
2026-06-21T22:29:41.4328313Z         },
2026-06-21T22:29:41.4328402Z         "int": {
2026-06-21T22:29:41.4328487Z           "complete": false,
2026-06-21T22:29:41.4328597Z           "evidence": []
2026-06-21T22:29:41.4328673Z         },
2026-06-21T22:29:41.4328771Z         "unit": {
2026-06-21T22:29:41.4328870Z           "complete": true,
2026-06-21T22:29:41.4329039Z           "evidence": [
2026-06-21T22:29:41.4329119Z             {
2026-06-21T22:29:41.4329238Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4329325Z               "line": 183
2026-06-21T22:29:41.4329509Z             },
2026-06-21T22:29:41.4329602Z             {
2026-06-21T22:29:41.4329762Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4329839Z               "line": 195
2026-06-21T22:29:41.4329926Z             },
2026-06-21T22:29:41.4330011Z             {
2026-06-21T22:29:41.4330135Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4330222Z               "line": 211
2026-06-21T22:29:41.4330306Z             },
2026-06-21T22:29:41.4330392Z             {
2026-06-21T22:29:41.4330512Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T22:29:41.4330598Z               "line": 227
2026-06-21T22:29:41.4330778Z             }
2026-06-21T22:29:41.4330866Z           ]
2026-06-21T22:29:41.4330941Z         }
2026-06-21T22:29:41.4331030Z       }
2026-06-21T22:29:41.4331120Z     },
2026-06-21T22:29:41.4331202Z     {
2026-06-21T22:29:41.4331300Z       "id": "REQ-PICKER-1",
2026-06-21T22:29:41.4334879Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T22:29:41.4335009Z       "requiredStages": [
2026-06-21T22:29:41.4335095Z         "impl",
2026-06-21T22:29:41.4335180Z         "unit"
2026-06-21T22:29:41.4335261Z       ],
2026-06-21T22:29:41.4335348Z       "stages": {
2026-06-21T22:29:41.4335428Z         "doc": {
2026-06-21T22:29:41.4335514Z           "complete": false,
2026-06-21T22:29:41.4335605Z           "evidence": []
2026-06-21T22:29:41.4335696Z         },
2026-06-21T22:29:41.4335781Z         "impl": {
2026-06-21T22:29:41.4335871Z           "complete": true,
2026-06-21T22:29:41.4335973Z           "evidence": [
2026-06-21T22:29:41.4336058Z             {
2026-06-21T22:29:41.4336180Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4336271Z               "line": 248
2026-06-21T22:29:41.4336357Z             },
2026-06-21T22:29:41.4336450Z             {
2026-06-21T22:29:41.4336578Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4336675Z               "line": 263
2026-06-21T22:29:41.4336746Z             }
2026-06-21T22:29:41.4336831Z           ]
2026-06-21T22:29:41.4336912Z         },
2026-06-21T22:29:41.4337008Z         "int": {
2026-06-21T22:29:41.4337108Z           "complete": false,
2026-06-21T22:29:41.4337184Z           "evidence": []
2026-06-21T22:29:41.4337271Z         },
2026-06-21T22:29:41.4337346Z         "unit": {
2026-06-21T22:29:41.4337441Z           "complete": true,
2026-06-21T22:29:41.4337527Z           "evidence": [
2026-06-21T22:29:41.4337609Z             {
2026-06-21T22:29:41.4337733Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4337823Z               "line": 476
2026-06-21T22:29:41.4337905Z             },
2026-06-21T22:29:41.4337981Z             {
2026-06-21T22:29:41.4338099Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4338186Z               "line": 753
2026-06-21T22:29:41.4338356Z             },
2026-06-21T22:29:41.4338442Z             {
2026-06-21T22:29:41.4338559Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4338652Z               "line": 886
2026-06-21T22:29:41.4338738Z             },
2026-06-21T22:29:41.4338821Z             {
2026-06-21T22:29:41.4338930Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4339099Z               "line": 455
2026-06-21T22:29:41.4339185Z             }
2026-06-21T22:29:41.4339261Z           ]
2026-06-21T22:29:41.4339350Z         }
2026-06-21T22:29:41.4339431Z       }
2026-06-21T22:29:41.4339522Z     },
2026-06-21T22:29:41.4339712Z     {
2026-06-21T22:29:41.4339808Z       "id": "REQ-PICKER-2",
2026-06-21T22:29:41.4341695Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T22:29:41.4341800Z       "requiredStages": [
2026-06-21T22:29:41.4341883Z         "impl",
2026-06-21T22:29:41.4341969Z         "unit"
2026-06-21T22:29:41.4342045Z       ],
2026-06-21T22:29:41.4342132Z       "stages": {
2026-06-21T22:29:41.4342208Z         "doc": {
2026-06-21T22:29:41.4342302Z           "complete": false,
2026-06-21T22:29:41.4342404Z           "evidence": []
2026-06-21T22:29:41.4342485Z         },
2026-06-21T22:29:41.4342570Z         "impl": {
2026-06-21T22:29:41.4342661Z           "complete": true,
2026-06-21T22:29:41.4342747Z           "evidence": [
2026-06-21T22:29:41.4342828Z             {
2026-06-21T22:29:41.4342946Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4343048Z               "line": 183
2026-06-21T22:29:41.4343133Z             },
2026-06-21T22:29:41.4343213Z             {
2026-06-21T22:29:41.4343314Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4343409Z               "line": 296
2026-06-21T22:29:41.4343490Z             }
2026-06-21T22:29:41.4343576Z           ]
2026-06-21T22:29:41.4343663Z         },
2026-06-21T22:29:41.4343752Z         "int": {
2026-06-21T22:29:41.4343843Z           "complete": false,
2026-06-21T22:29:41.4343920Z           "evidence": []
2026-06-21T22:29:41.4344007Z         },
2026-06-21T22:29:41.4344091Z         "unit": {
2026-06-21T22:29:41.4344187Z           "complete": true,
2026-06-21T22:29:41.4344269Z           "evidence": [
2026-06-21T22:29:41.4344350Z             {
2026-06-21T22:29:41.4344477Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4344562Z               "line": 655
2026-06-21T22:29:41.4344648Z             }
2026-06-21T22:29:41.4344730Z           ]
2026-06-21T22:29:41.4344815Z         }
2026-06-21T22:29:41.4344896Z       }
2026-06-21T22:29:41.4344983Z     },
2026-06-21T22:29:41.4345068Z     {
2026-06-21T22:29:41.4345153Z       "id": "REQ-PICKER-3",
2026-06-21T22:29:41.4347592Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T22:29:41.4347821Z       "requiredStages": [
2026-06-21T22:29:41.4347907Z         "impl",
2026-06-21T22:29:41.4347992Z         "unit"
2026-06-21T22:29:41.4348078Z       ],
2026-06-21T22:29:41.4348155Z       "stages": {
2026-06-21T22:29:41.4348245Z         "doc": {
2026-06-21T22:29:41.4348331Z           "complete": false,
2026-06-21T22:29:41.4348416Z           "evidence": []
2026-06-21T22:29:41.4348503Z         },
2026-06-21T22:29:41.4348588Z         "impl": {
2026-06-21T22:29:41.4348683Z           "complete": true,
2026-06-21T22:29:41.4348761Z           "evidence": [
2026-06-21T22:29:41.4349022Z             {
2026-06-21T22:29:41.4349137Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4349222Z               "line": 124
2026-06-21T22:29:41.4349317Z             }
2026-06-21T22:29:41.4349410Z           ]
2026-06-21T22:29:41.4349504Z         },
2026-06-21T22:29:41.4349588Z         "int": {
2026-06-21T22:29:41.4349683Z           "complete": false,
2026-06-21T22:29:41.4349765Z           "evidence": []
2026-06-21T22:29:41.4349849Z         },
2026-06-21T22:29:41.4349934Z         "unit": {
2026-06-21T22:29:41.4350015Z           "complete": true,
2026-06-21T22:29:41.4350111Z           "evidence": [
2026-06-21T22:29:41.4350192Z             {
2026-06-21T22:29:41.4350301Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4350388Z               "line": 369
2026-06-21T22:29:41.4350468Z             }
2026-06-21T22:29:41.4350554Z           ]
2026-06-21T22:29:41.4350635Z         }
2026-06-21T22:29:41.4350717Z       }
2026-06-21T22:29:41.4350802Z     },
2026-06-21T22:29:41.4350887Z     {
2026-06-21T22:29:41.4350974Z       "id": "REQ-PICKER-4",
2026-06-21T22:29:41.4352858Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T22:29:41.4352965Z       "requiredStages": [
2026-06-21T22:29:41.4353050Z         "impl",
2026-06-21T22:29:41.4353135Z         "unit"
2026-06-21T22:29:41.4353221Z       ],
2026-06-21T22:29:41.4353298Z       "stages": {
2026-06-21T22:29:41.4353398Z         "doc": {
2026-06-21T22:29:41.4353473Z           "complete": false,
2026-06-21T22:29:41.4353560Z           "evidence": []
2026-06-21T22:29:41.4353645Z         },
2026-06-21T22:29:41.4353731Z         "impl": {
2026-06-21T22:29:41.4353817Z           "complete": true,
2026-06-21T22:29:41.4353909Z           "evidence": [
2026-06-21T22:29:41.4353993Z             {
2026-06-21T22:29:41.4354122Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4354209Z               "line": 353
2026-06-21T22:29:41.4354294Z             },
2026-06-21T22:29:41.4354384Z             {
2026-06-21T22:29:41.4354495Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4354576Z               "line": 105
2026-06-21T22:29:41.4354655Z             }
2026-06-21T22:29:41.4354737Z           ]
2026-06-21T22:29:41.4354824Z         },
2026-06-21T22:29:41.4354905Z         "int": {
2026-06-21T22:29:41.4354998Z           "complete": false,
2026-06-21T22:29:41.4355103Z           "evidence": []
2026-06-21T22:29:41.4355190Z         },
2026-06-21T22:29:41.4355276Z         "unit": {
2026-06-21T22:29:41.4355351Z           "complete": true,
2026-06-21T22:29:41.4355437Z           "evidence": [
2026-06-21T22:29:41.4355524Z             {
2026-06-21T22:29:41.4355647Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4355862Z               "line": 1246
2026-06-21T22:29:41.4355962Z             },
2026-06-21T22:29:41.4356052Z             {
2026-06-21T22:29:41.4356163Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4356257Z               "line": 427
2026-06-21T22:29:41.4356338Z             }
2026-06-21T22:29:41.4356425Z           ]
2026-06-21T22:29:41.4356510Z         }
2026-06-21T22:29:41.4356591Z       }
2026-06-21T22:29:41.4356677Z     },
2026-06-21T22:29:41.4356754Z     {
2026-06-21T22:29:41.4356854Z       "id": "REQ-PICKER-5",
2026-06-21T22:29:41.4359941Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T22:29:41.4360182Z       "requiredStages": [
2026-06-21T22:29:41.4360272Z         "impl",
2026-06-21T22:29:41.4360363Z         "unit"
2026-06-21T22:29:41.4360437Z       ],
2026-06-21T22:29:41.4360527Z       "stages": {
2026-06-21T22:29:41.4360609Z         "doc": {
2026-06-21T22:29:41.4360704Z           "complete": false,
2026-06-21T22:29:41.4360795Z           "evidence": []
2026-06-21T22:29:41.4360876Z         },
2026-06-21T22:29:41.4360958Z         "impl": {
2026-06-21T22:29:41.4361043Z           "complete": true,
2026-06-21T22:29:41.4361137Z           "evidence": [
2026-06-21T22:29:41.4361219Z             {
2026-06-21T22:29:41.4361329Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4361410Z               "line": 1802
2026-06-21T22:29:41.4361485Z             }
2026-06-21T22:29:41.4361573Z           ]
2026-06-21T22:29:41.4361658Z         },
2026-06-21T22:29:41.4361744Z         "int": {
2026-06-21T22:29:41.4361830Z           "complete": false,
2026-06-21T22:29:41.4361926Z           "evidence": []
2026-06-21T22:29:41.4362006Z         },
2026-06-21T22:29:41.4362092Z         "unit": {
2026-06-21T22:29:41.4362193Z           "complete": true,
2026-06-21T22:29:41.4362279Z           "evidence": [
2026-06-21T22:29:41.4362363Z             {
2026-06-21T22:29:41.4362469Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4362575Z               "line": 7526
2026-06-21T22:29:41.4362654Z             }
2026-06-21T22:29:41.4362734Z           ]
2026-06-21T22:29:41.4362815Z         }
2026-06-21T22:29:41.4362896Z       }
2026-06-21T22:29:41.4362976Z     },
2026-06-21T22:29:41.4363061Z     {
2026-06-21T22:29:41.4363185Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T22:29:41.4364558Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T22:29:41.4364663Z       "requiredStages": [],
2026-06-21T22:29:41.4364755Z       "stages": {
2026-06-21T22:29:41.4364831Z         "doc": {
2026-06-21T22:29:41.4364925Z           "complete": false,
2026-06-21T22:29:41.4365197Z           "evidence": []
2026-06-21T22:29:41.4365274Z         },
2026-06-21T22:29:41.4365370Z         "impl": {
2026-06-21T22:29:41.4365451Z           "complete": false,
2026-06-21T22:29:41.4365540Z           "evidence": []
2026-06-21T22:29:41.4365616Z         },
2026-06-21T22:29:41.4365707Z         "int": {
2026-06-21T22:29:41.4365788Z           "complete": false,
2026-06-21T22:29:41.4365878Z           "evidence": []
2026-06-21T22:29:41.4365959Z         },
2026-06-21T22:29:41.4366050Z         "unit": {
2026-06-21T22:29:41.4366145Z           "complete": false,
2026-06-21T22:29:41.4366264Z           "evidence": []
2026-06-21T22:29:41.4366436Z         }
2026-06-21T22:29:41.4366517Z       }
2026-06-21T22:29:41.4366607Z     },
2026-06-21T22:29:41.4366689Z     {
2026-06-21T22:29:41.4366784Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T22:29:41.4367889Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T22:29:41.4367980Z       "requiredStages": [
2026-06-21T22:29:41.4368069Z         "impl",
2026-06-21T22:29:41.4368159Z         "unit"
2026-06-21T22:29:41.4368239Z       ],
2026-06-21T22:29:41.4368326Z       "stages": {
2026-06-21T22:29:41.4368403Z         "doc": {
2026-06-21T22:29:41.4368497Z           "complete": false,
2026-06-21T22:29:41.4368588Z           "evidence": []
2026-06-21T22:29:41.4368698Z         },
2026-06-21T22:29:41.4368779Z         "impl": {
2026-06-21T22:29:41.4368868Z           "complete": true,
2026-06-21T22:29:41.4369051Z           "evidence": [
2026-06-21T22:29:41.4369126Z             {
2026-06-21T22:29:41.4369257Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4369332Z               "line": 275
2026-06-21T22:29:41.4369422Z             }
2026-06-21T22:29:41.4369513Z           ]
2026-06-21T22:29:41.4369595Z         },
2026-06-21T22:29:41.4369680Z         "int": {
2026-06-21T22:29:41.4369766Z           "complete": false,
2026-06-21T22:29:41.4369857Z           "evidence": []
2026-06-21T22:29:41.4369938Z         },
2026-06-21T22:29:41.4370028Z         "unit": {
2026-06-21T22:29:41.4370114Z           "complete": true,
2026-06-21T22:29:41.4370191Z           "evidence": [
2026-06-21T22:29:41.4370281Z             {
2026-06-21T22:29:41.4370385Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4370472Z               "line": 400
2026-06-21T22:29:41.4370563Z             }
2026-06-21T22:29:41.4370648Z           ]
2026-06-21T22:29:41.4370727Z         }
2026-06-21T22:29:41.4370809Z       }
2026-06-21T22:29:41.4370894Z     },
2026-06-21T22:29:41.4370974Z     {
2026-06-21T22:29:41.4371073Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T22:29:41.4372603Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T22:29:41.4372709Z       "requiredStages": [
2026-06-21T22:29:41.4372796Z         "impl",
2026-06-21T22:29:41.4372881Z         "unit"
2026-06-21T22:29:41.4372972Z       ],
2026-06-21T22:29:41.4373058Z       "stages": {
2026-06-21T22:29:41.4373144Z         "doc": {
2026-06-21T22:29:41.4376040Z           "complete": false,
2026-06-21T22:29:41.4376162Z           "evidence": []
2026-06-21T22:29:41.4376257Z         },
2026-06-21T22:29:41.4376344Z         "impl": {
2026-06-21T22:29:41.4376605Z           "complete": true,
2026-06-21T22:29:41.4376701Z           "evidence": [
2026-06-21T22:29:41.4376781Z             {
2026-06-21T22:29:41.4376906Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4376987Z               "line": 654
2026-06-21T22:29:41.4377068Z             }
2026-06-21T22:29:41.4377148Z           ]
2026-06-21T22:29:41.4377230Z         },
2026-06-21T22:29:41.4377325Z         "int": {
2026-06-21T22:29:41.4377420Z           "complete": false,
2026-06-21T22:29:41.4377511Z           "evidence": []
2026-06-21T22:29:41.4377593Z         },
2026-06-21T22:29:41.4377682Z         "unit": {
2026-06-21T22:29:41.4377763Z           "complete": true,
2026-06-21T22:29:41.4377965Z           "evidence": [
2026-06-21T22:29:41.4378049Z             {
2026-06-21T22:29:41.4378169Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4378256Z               "line": 1078
2026-06-21T22:29:41.4378340Z             },
2026-06-21T22:29:41.4378416Z             {
2026-06-21T22:29:41.4378525Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4378620Z               "line": 1092
2026-06-21T22:29:41.4378705Z             }
2026-06-21T22:29:41.4378785Z           ]
2026-06-21T22:29:41.4378872Z         }
2026-06-21T22:29:41.4379019Z       }
2026-06-21T22:29:41.4379109Z     },
2026-06-21T22:29:41.4379186Z     {
2026-06-21T22:29:41.4379292Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T22:29:41.4380917Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T22:29:41.4381017Z       "requiredStages": [],
2026-06-21T22:29:41.4381105Z       "stages": {
2026-06-21T22:29:41.4381189Z         "doc": {
2026-06-21T22:29:41.4381279Z           "complete": false,
2026-06-21T22:29:41.4381374Z           "evidence": []
2026-06-21T22:29:41.4381441Z         },
2026-06-21T22:29:41.4381529Z         "impl": {
2026-06-21T22:29:41.4381619Z           "complete": false,
2026-06-21T22:29:41.4381705Z           "evidence": []
2026-06-21T22:29:41.4381782Z         },
2026-06-21T22:29:41.4381872Z         "int": {
2026-06-21T22:29:41.4381957Z           "complete": false,
2026-06-21T22:29:41.4382034Z           "evidence": []
2026-06-21T22:29:41.4382135Z         },
2026-06-21T22:29:41.4382220Z         "unit": {
2026-06-21T22:29:41.4382315Z           "complete": false,
2026-06-21T22:29:41.4382402Z           "evidence": []
2026-06-21T22:29:41.4382488Z         }
2026-06-21T22:29:41.4382568Z       }
2026-06-21T22:29:41.4382654Z     },
2026-06-21T22:29:41.4382740Z     {
2026-06-21T22:29:41.4382830Z       "id": "REQ-PRES-1",
2026-06-21T22:29:41.4384148Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T22:29:41.4384248Z       "requiredStages": [
2026-06-21T22:29:41.4384334Z         "impl",
2026-06-21T22:29:41.4384421Z         "unit",
2026-06-21T22:29:41.4384510Z         "int"
2026-06-21T22:29:41.4384596Z       ],
2026-06-21T22:29:41.4384683Z       "stages": {
2026-06-21T22:29:41.4384759Z         "doc": {
2026-06-21T22:29:41.4384863Z           "complete": true,
2026-06-21T22:29:41.4384954Z           "evidence": [
2026-06-21T22:29:41.4385035Z             {
2026-06-21T22:29:41.4385246Z               "path": "docs/DEFERRED.md",
2026-06-21T22:29:41.4385336Z               "line": 11
2026-06-21T22:29:41.4385422Z             }
2026-06-21T22:29:41.4385512Z           ]
2026-06-21T22:29:41.4385594Z         },
2026-06-21T22:29:41.4385670Z         "impl": {
2026-06-21T22:29:41.4385765Z           "complete": true,
2026-06-21T22:29:41.4385855Z           "evidence": [
2026-06-21T22:29:41.4385942Z             {
2026-06-21T22:29:41.4386065Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4386161Z               "line": 515
2026-06-21T22:29:41.4386247Z             },
2026-06-21T22:29:41.4386332Z             {
2026-06-21T22:29:41.4386581Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4386661Z               "line": 567
2026-06-21T22:29:41.4386746Z             },
2026-06-21T22:29:41.4386831Z             {
2026-06-21T22:29:41.4386937Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4387017Z               "line": 188
2026-06-21T22:29:41.4387103Z             },
2026-06-21T22:29:41.4387189Z             {
2026-06-21T22:29:41.4387305Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4387394Z               "line": 214
2026-06-21T22:29:41.4387481Z             },
2026-06-21T22:29:41.4387566Z             {
2026-06-21T22:29:41.4387684Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4387771Z               "line": 28
2026-06-21T22:29:41.4387858Z             },
2026-06-21T22:29:41.4387942Z             {
2026-06-21T22:29:41.4388052Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4388134Z               "line": 105
2026-06-21T22:29:41.4388215Z             },
2026-06-21T22:29:41.4388296Z             {
2026-06-21T22:29:41.4388405Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4388487Z               "line": 161
2026-06-21T22:29:41.4388567Z             },
2026-06-21T22:29:41.4388648Z             {
2026-06-21T22:29:41.4388764Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4388840Z               "line": 180
2026-06-21T22:29:41.4388924Z             },
2026-06-21T22:29:41.4389105Z             {
2026-06-21T22:29:41.4389236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4389326Z               "line": 421
2026-06-21T22:29:41.4389432Z             },
2026-06-21T22:29:41.4389519Z             {
2026-06-21T22:29:41.4389641Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4389727Z               "line": 289
2026-06-21T22:29:41.4389809Z             },
2026-06-21T22:29:41.4389889Z             {
2026-06-21T22:29:41.4390003Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4390095Z               "line": 336
2026-06-21T22:29:41.4390181Z             },
2026-06-21T22:29:41.4390261Z             {
2026-06-21T22:29:41.4390381Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4390476Z               "line": 362
2026-06-21T22:29:41.4390552Z             },
2026-06-21T22:29:41.4390628Z             {
2026-06-21T22:29:41.4390753Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4390843Z               "line": 100
2026-06-21T22:29:41.4390929Z             }
2026-06-21T22:29:41.4391011Z           ]
2026-06-21T22:29:41.4391091Z         },
2026-06-21T22:29:41.4391177Z         "int": {
2026-06-21T22:29:41.4391262Z           "complete": true,
2026-06-21T22:29:41.4391350Z           "evidence": [
2026-06-21T22:29:41.4391439Z             {
2026-06-21T22:29:41.4391558Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4391645Z               "line": 563
2026-06-21T22:29:41.4391735Z             },
2026-06-21T22:29:41.4391820Z             {
2026-06-21T22:29:41.4391939Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4392015Z               "line": 747
2026-06-21T22:29:41.4392094Z             },
2026-06-21T22:29:41.4392275Z             {
2026-06-21T22:29:41.4392395Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4392470Z               "line": 1165
2026-06-21T22:29:41.4392551Z             }
2026-06-21T22:29:41.4392643Z           ]
2026-06-21T22:29:41.4392724Z         },
2026-06-21T22:29:41.4392804Z         "unit": {
2026-06-21T22:29:41.4392890Z           "complete": true,
2026-06-21T22:29:41.4392981Z           "evidence": [
2026-06-21T22:29:41.4393062Z             {
2026-06-21T22:29:41.4393171Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4393268Z               "line": 674
2026-06-21T22:29:41.4393338Z             },
2026-06-21T22:29:41.4393514Z             {
2026-06-21T22:29:41.4393634Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4393729Z               "line": 238
2026-06-21T22:29:41.4393815Z             },
2026-06-21T22:29:41.4393902Z             {
2026-06-21T22:29:41.4394020Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4394106Z               "line": 269
2026-06-21T22:29:41.4394193Z             },
2026-06-21T22:29:41.4394278Z             {
2026-06-21T22:29:41.4394400Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4394491Z               "line": 305
2026-06-21T22:29:41.4394572Z             },
2026-06-21T22:29:41.4394656Z             {
2026-06-21T22:29:41.4394774Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T22:29:41.4394866Z               "line": 336
2026-06-21T22:29:41.4394947Z             },
2026-06-21T22:29:41.4395028Z             {
2026-06-21T22:29:41.4395156Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4395257Z               "line": 1217
2026-06-21T22:29:41.4395338Z             },
2026-06-21T22:29:41.4395423Z             {
2026-06-21T22:29:41.4395529Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4395614Z               "line": 1163
2026-06-21T22:29:41.4395690Z             }
2026-06-21T22:29:41.4395776Z           ]
2026-06-21T22:29:41.4395853Z         }
2026-06-21T22:29:41.4395943Z       }
2026-06-21T22:29:41.4396024Z     },
2026-06-21T22:29:41.4396110Z     {
2026-06-21T22:29:41.4396192Z       "id": "REQ-RC-1",
2026-06-21T22:29:41.4398179Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T22:29:41.4398287Z       "requiredStages": [
2026-06-21T22:29:41.4398375Z         "impl",
2026-06-21T22:29:41.4398460Z         "unit",
2026-06-21T22:29:41.4398546Z         "int"
2026-06-21T22:29:41.4398626Z       ],
2026-06-21T22:29:41.4398708Z       "stages": {
2026-06-21T22:29:41.4398789Z         "doc": {
2026-06-21T22:29:41.4398889Z           "complete": false,
2026-06-21T22:29:41.4399062Z           "evidence": []
2026-06-21T22:29:41.4399146Z         },
2026-06-21T22:29:41.4399236Z         "impl": {
2026-06-21T22:29:41.4399333Z           "complete": true,
2026-06-21T22:29:41.4399419Z           "evidence": [
2026-06-21T22:29:41.4399498Z             {
2026-06-21T22:29:41.4399612Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4399708Z               "line": 1022
2026-06-21T22:29:41.4399787Z             },
2026-06-21T22:29:41.4399868Z             {
2026-06-21T22:29:41.4399992Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4400079Z               "line": 2177
2026-06-21T22:29:41.4400268Z             },
2026-06-21T22:29:41.4400350Z             {
2026-06-21T22:29:41.4400468Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4400554Z               "line": 1017
2026-06-21T22:29:41.4400641Z             },
2026-06-21T22:29:41.4400717Z             {
2026-06-21T22:29:41.4400830Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4400917Z               "line": 1051
2026-06-21T22:29:41.4400998Z             },
2026-06-21T22:29:41.4401080Z             {
2026-06-21T22:29:41.4401184Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4401275Z               "line": 22
2026-06-21T22:29:41.4401446Z             },
2026-06-21T22:29:41.4401532Z             {
2026-06-21T22:29:41.4401638Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4401732Z               "line": 701
2026-06-21T22:29:41.4401813Z             }
2026-06-21T22:29:41.4401900Z           ]
2026-06-21T22:29:41.4401985Z         },
2026-06-21T22:29:41.4402061Z         "int": {
2026-06-21T22:29:41.4402162Z           "complete": true,
2026-06-21T22:29:41.4402244Z           "evidence": [
2026-06-21T22:29:41.4402332Z             {
2026-06-21T22:29:41.4402446Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4402532Z               "line": 258
2026-06-21T22:29:41.4402622Z             },
2026-06-21T22:29:41.4402701Z             {
2026-06-21T22:29:41.4402826Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4402902Z               "line": 285
2026-06-21T22:29:41.4402997Z             },
2026-06-21T22:29:41.4403073Z             {
2026-06-21T22:29:41.4403194Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4403289Z               "line": 413
2026-06-21T22:29:41.4403373Z             }
2026-06-21T22:29:41.4403455Z           ]
2026-06-21T22:29:41.4403537Z         },
2026-06-21T22:29:41.4403622Z         "unit": {
2026-06-21T22:29:41.4403707Z           "complete": true,
2026-06-21T22:29:41.4403803Z           "evidence": [
2026-06-21T22:29:41.4403894Z             {
2026-06-21T22:29:41.4403998Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4404084Z               "line": 1415
2026-06-21T22:29:41.4404167Z             },
2026-06-21T22:29:41.4404251Z             {
2026-06-21T22:29:41.4404351Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4404428Z               "line": 1133
2026-06-21T22:29:41.4404514Z             },
2026-06-21T22:29:41.4404599Z             {
2026-06-21T22:29:41.4404704Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4404782Z               "line": 1162
2026-06-21T22:29:41.4404853Z             },
2026-06-21T22:29:41.4404937Z             {
2026-06-21T22:29:41.4405032Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4405123Z               "line": 1175
2026-06-21T22:29:41.4405198Z             }
2026-06-21T22:29:41.4405287Z           ]
2026-06-21T22:29:41.4405368Z         }
2026-06-21T22:29:41.4405459Z       }
2026-06-21T22:29:41.4405550Z     },
2026-06-21T22:29:41.4405630Z     {
2026-06-21T22:29:41.4405741Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T22:29:41.4411497Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T22:29:41.4411816Z       "requiredStages": [
2026-06-21T22:29:41.4411906Z         "doc",
2026-06-21T22:29:41.4411992Z         "impl",
2026-06-21T22:29:41.4412078Z         "unit"
2026-06-21T22:29:41.4412160Z       ],
2026-06-21T22:29:41.4412244Z       "stages": {
2026-06-21T22:29:41.4412339Z         "doc": {
2026-06-21T22:29:41.4412422Z           "complete": true,
2026-06-21T22:29:41.4412518Z           "evidence": [
2026-06-21T22:29:41.4412592Z             {
2026-06-21T22:29:41.4412693Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4412780Z               "line": 345
2026-06-21T22:29:41.4412879Z             },
2026-06-21T22:29:41.4412968Z             {
2026-06-21T22:29:41.4413073Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.4413159Z               "line": 440
2026-06-21T22:29:41.4413243Z             }
2026-06-21T22:29:41.4413328Z           ]
2026-06-21T22:29:41.4413400Z         },
2026-06-21T22:29:41.4413501Z         "impl": {
2026-06-21T22:29:41.4413581Z           "complete": true,
2026-06-21T22:29:41.4413671Z           "evidence": [
2026-06-21T22:29:41.4413754Z             {
2026-06-21T22:29:41.4413854Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4413943Z               "line": 226
2026-06-21T22:29:41.4414030Z             },
2026-06-21T22:29:41.4414111Z             {
2026-06-21T22:29:41.4414215Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4414301Z               "line": 285
2026-06-21T22:29:41.4414383Z             },
2026-06-21T22:29:41.4414458Z             {
2026-06-21T22:29:41.4414568Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4414659Z               "line": 300
2026-06-21T22:29:41.4414750Z             },
2026-06-21T22:29:41.4414830Z             {
2026-06-21T22:29:41.4414921Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4415013Z               "line": 315
2026-06-21T22:29:41.4415093Z             },
2026-06-21T22:29:41.4415188Z             {
2026-06-21T22:29:41.4415284Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4415371Z               "line": 364
2026-06-21T22:29:41.4415455Z             }
2026-06-21T22:29:41.4415535Z           ]
2026-06-21T22:29:41.4415621Z         },
2026-06-21T22:29:41.4415707Z         "int": {
2026-06-21T22:29:41.4415804Z           "complete": false,
2026-06-21T22:29:41.4415894Z           "evidence": []
2026-06-21T22:29:41.4415981Z         },
2026-06-21T22:29:41.4416073Z         "unit": {
2026-06-21T22:29:41.4416167Z           "complete": true,
2026-06-21T22:29:41.4416258Z           "evidence": [
2026-06-21T22:29:41.4416344Z             {
2026-06-21T22:29:41.4416458Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4416543Z               "line": 1190
2026-06-21T22:29:41.4416635Z             },
2026-06-21T22:29:41.4416720Z             {
2026-06-21T22:29:41.4416815Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4416916Z               "line": 1305
2026-06-21T22:29:41.4417097Z             }
2026-06-21T22:29:41.4417177Z           ]
2026-06-21T22:29:41.4417260Z         }
2026-06-21T22:29:41.4417345Z       }
2026-06-21T22:29:41.4417431Z     },
2026-06-21T22:29:41.4417516Z     {
2026-06-21T22:29:41.4417613Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T22:29:41.4421946Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T22:29:41.4422195Z       "requiredStages": [
2026-06-21T22:29:41.4422279Z         "doc",
2026-06-21T22:29:41.4422362Z         "impl",
2026-06-21T22:29:41.4422448Z         "unit"
2026-06-21T22:29:41.4422543Z       ],
2026-06-21T22:29:41.4422623Z       "stages": {
2026-06-21T22:29:41.4422701Z         "doc": {
2026-06-21T22:29:41.4422800Z           "complete": true,
2026-06-21T22:29:41.4422877Z           "evidence": [
2026-06-21T22:29:41.4422962Z             {
2026-06-21T22:29:41.4423068Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.4423157Z               "line": 461
2026-06-21T22:29:41.4423238Z             }
2026-06-21T22:29:41.4423321Z           ]
2026-06-21T22:29:41.4423407Z         },
2026-06-21T22:29:41.4423481Z         "impl": {
2026-06-21T22:29:41.4423576Z           "complete": true,
2026-06-21T22:29:41.4423657Z           "evidence": [
2026-06-21T22:29:41.4423747Z             {
2026-06-21T22:29:41.4423845Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4423941Z               "line": 421
2026-06-21T22:29:41.4424023Z             },
2026-06-21T22:29:41.4424099Z             {
2026-06-21T22:29:41.4424198Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4424285Z               "line": 437
2026-06-21T22:29:41.4424370Z             }
2026-06-21T22:29:41.4424451Z           ]
2026-06-21T22:29:41.4424541Z         },
2026-06-21T22:29:41.4424633Z         "int": {
2026-06-21T22:29:41.4424723Z           "complete": false,
2026-06-21T22:29:41.4424813Z           "evidence": []
2026-06-21T22:29:41.4424890Z         },
2026-06-21T22:29:41.4424977Z         "unit": {
2026-06-21T22:29:41.4425066Z           "complete": true,
2026-06-21T22:29:41.4425147Z           "evidence": [
2026-06-21T22:29:41.4425239Z             {
2026-06-21T22:29:41.4425325Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4425429Z               "line": 1440
2026-06-21T22:29:41.4425510Z             },
2026-06-21T22:29:41.4425592Z             {
2026-06-21T22:29:41.4425686Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4425772Z               "line": 1459
2026-06-21T22:29:41.4425864Z             },
2026-06-21T22:29:41.4425954Z             {
2026-06-21T22:29:41.4426176Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4426267Z               "line": 1471
2026-06-21T22:29:41.4426350Z             },
2026-06-21T22:29:41.4426426Z             {
2026-06-21T22:29:41.4426527Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4426618Z               "line": 1499
2026-06-21T22:29:41.4426693Z             }
2026-06-21T22:29:41.4426779Z           ]
2026-06-21T22:29:41.4426856Z         }
2026-06-21T22:29:41.4426933Z       }
2026-06-21T22:29:41.4427004Z     },
2026-06-21T22:29:41.4427094Z     {
2026-06-21T22:29:41.4427195Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T22:29:41.4431915Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T22:29:41.4432163Z       "requiredStages": [
2026-06-21T22:29:41.4432249Z         "doc",
2026-06-21T22:29:41.4432326Z         "impl",
2026-06-21T22:29:41.4432407Z         "unit"
2026-06-21T22:29:41.4432478Z       ],
2026-06-21T22:29:41.4432569Z       "stages": {
2026-06-21T22:29:41.4432645Z         "doc": {
2026-06-21T22:29:41.4432735Z           "complete": true,
2026-06-21T22:29:41.4432821Z           "evidence": [
2026-06-21T22:29:41.4432902Z             {
2026-06-21T22:29:41.4433012Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T22:29:41.4433098Z               "line": 447
2026-06-21T22:29:41.4433174Z             }
2026-06-21T22:29:41.4433247Z           ]
2026-06-21T22:29:41.4433332Z         },
2026-06-21T22:29:41.4433412Z         "impl": {
2026-06-21T22:29:41.4433527Z           "complete": true,
2026-06-21T22:29:41.4433618Z           "evidence": [
2026-06-21T22:29:41.4433698Z             {
2026-06-21T22:29:41.4433798Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4433886Z               "line": 395
2026-06-21T22:29:41.4433976Z             },
2026-06-21T22:29:41.4434051Z             {
2026-06-21T22:29:41.4434146Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4434227Z               "line": 411
2026-06-21T22:29:41.4434307Z             },
2026-06-21T22:29:41.4434391Z             {
2026-06-21T22:29:41.4434491Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4434597Z               "line": 454
2026-06-21T22:29:41.4434669Z             },
2026-06-21T22:29:41.4434753Z             {
2026-06-21T22:29:41.4434854Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4434940Z               "line": 468
2026-06-21T22:29:41.4435030Z             },
2026-06-21T22:29:41.4435111Z             {
2026-06-21T22:29:41.4435322Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4435402Z               "line": 479
2026-06-21T22:29:41.4435489Z             }
2026-06-21T22:29:41.4435575Z           ]
2026-06-21T22:29:41.4435660Z         },
2026-06-21T22:29:41.4435741Z         "int": {
2026-06-21T22:29:41.4435828Z           "complete": false,
2026-06-21T22:29:41.4435922Z           "evidence": []
2026-06-21T22:29:41.4435998Z         },
2026-06-21T22:29:41.4436094Z         "unit": {
2026-06-21T22:29:41.4436176Z           "complete": true,
2026-06-21T22:29:41.4436269Z           "evidence": [
2026-06-21T22:29:41.4436356Z             {
2026-06-21T22:29:41.4436452Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4436627Z               "line": 1381
2026-06-21T22:29:41.4436712Z             },
2026-06-21T22:29:41.4436798Z             {
2026-06-21T22:29:41.4436902Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4436982Z               "line": 1402
2026-06-21T22:29:41.4437073Z             },
2026-06-21T22:29:41.4437159Z             {
2026-06-21T22:29:41.4437258Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4437339Z               "line": 1423
2026-06-21T22:29:41.4437421Z             }
2026-06-21T22:29:41.4437502Z           ]
2026-06-21T22:29:41.4437583Z         }
2026-06-21T22:29:41.4437668Z       }
2026-06-21T22:29:41.4437755Z     },
2026-06-21T22:29:41.4437836Z     {
2026-06-21T22:29:41.4437921Z       "id": "REQ-RCVIEW-1",
2026-06-21T22:29:41.4442380Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T22:29:41.4442518Z       "requiredStages": [
2026-06-21T22:29:41.4442605Z         "doc",
2026-06-21T22:29:41.4442690Z         "impl",
2026-06-21T22:29:41.4442766Z         "unit",
2026-06-21T22:29:41.4442853Z         "int"
2026-06-21T22:29:41.4442938Z       ],
2026-06-21T22:29:41.4443028Z       "stages": {
2026-06-21T22:29:41.4443114Z         "doc": {
2026-06-21T22:29:41.4443206Z           "complete": true,
2026-06-21T22:29:41.4443296Z           "evidence": [
2026-06-21T22:29:41.4443376Z             {
2026-06-21T22:29:41.4443477Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4443563Z               "line": 342
2026-06-21T22:29:41.4443639Z             }
2026-06-21T22:29:41.4443738Z           ]
2026-06-21T22:29:41.4443817Z         },
2026-06-21T22:29:41.4443897Z         "impl": {
2026-06-21T22:29:41.4443982Z           "complete": true,
2026-06-21T22:29:41.4444068Z           "evidence": [
2026-06-21T22:29:41.4444155Z             {
2026-06-21T22:29:41.4444273Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.4444479Z               "line": 423
2026-06-21T22:29:41.4444550Z             },
2026-06-21T22:29:41.4444639Z             {
2026-06-21T22:29:41.4444753Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4444839Z               "line": 705
2026-06-21T22:29:41.4444923Z             },
2026-06-21T22:29:41.4445008Z             {
2026-06-21T22:29:41.4445128Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4445210Z               "line": 716
2026-06-21T22:29:41.4445299Z             },
2026-06-21T22:29:41.4445380Z             {
2026-06-21T22:29:41.4445505Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.4445700Z               "line": 41
2026-06-21T22:29:41.4445787Z             },
2026-06-21T22:29:41.4445873Z             {
2026-06-21T22:29:41.4445991Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.4446082Z               "line": 62
2026-06-21T22:29:41.4446168Z             },
2026-06-21T22:29:41.4446263Z             {
2026-06-21T22:29:41.4446378Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4446468Z               "line": 309
2026-06-21T22:29:41.4446549Z             },
2026-06-21T22:29:41.4446625Z             {
2026-06-21T22:29:41.4446731Z               "path": "crates/spt/src/rc.rs",
2026-06-21T22:29:41.4446825Z               "line": 701
2026-06-21T22:29:41.4446911Z             }
2026-06-21T22:29:41.4446989Z           ]
2026-06-21T22:29:41.4447070Z         },
2026-06-21T22:29:41.4447154Z         "int": {
2026-06-21T22:29:41.4447244Z           "complete": true,
2026-06-21T22:29:41.4447325Z           "evidence": [
2026-06-21T22:29:41.4447406Z             {
2026-06-21T22:29:41.4447532Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4447628Z               "line": 913
2026-06-21T22:29:41.4447710Z             },
2026-06-21T22:29:41.4447786Z             {
2026-06-21T22:29:41.4447904Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4448001Z               "line": 953
2026-06-21T22:29:41.4448076Z             },
2026-06-21T22:29:41.4448162Z             {
2026-06-21T22:29:41.4448282Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4448363Z               "line": 1000
2026-06-21T22:29:41.4448449Z             },
2026-06-21T22:29:41.4448533Z             {
2026-06-21T22:29:41.4448649Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4448734Z               "line": 1112
2026-06-21T22:29:41.4448819Z             }
2026-06-21T22:29:41.4448911Z           ]
2026-06-21T22:29:41.4449068Z         },
2026-06-21T22:29:41.4449153Z         "unit": {
2026-06-21T22:29:41.4449255Z           "complete": true,
2026-06-21T22:29:41.4449345Z           "evidence": [
2026-06-21T22:29:41.4449426Z             {
2026-06-21T22:29:41.4449546Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.4449632Z               "line": 175
2026-06-21T22:29:41.4449711Z             },
2026-06-21T22:29:41.4449797Z             {
2026-06-21T22:29:41.4449899Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T22:29:41.4449993Z               "line": 195
2026-06-21T22:29:41.4450073Z             }
2026-06-21T22:29:41.4450158Z           ]
2026-06-21T22:29:41.4450250Z         }
2026-06-21T22:29:41.4450336Z       }
2026-06-21T22:29:41.4450421Z     },
2026-06-21T22:29:41.4450497Z     {
2026-06-21T22:29:41.4450593Z       "id": "REQ-REACH-1",
2026-06-21T22:29:41.4450740Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T22:29:41.4450836Z       "requiredStages": [
2026-06-21T22:29:41.4450917Z         "impl",
2026-06-21T22:29:41.4451003Z         "unit",
2026-06-21T22:29:41.4451079Z         "int"
2026-06-21T22:29:41.4451161Z       ],
2026-06-21T22:29:41.4451246Z       "stages": {
2026-06-21T22:29:41.4451327Z         "doc": {
2026-06-21T22:29:41.4451432Z           "complete": false,
2026-06-21T22:29:41.4451510Z           "evidence": []
2026-06-21T22:29:41.4451718Z         },
2026-06-21T22:29:41.4451810Z         "impl": {
2026-06-21T22:29:41.4451904Z           "complete": true,
2026-06-21T22:29:41.4451994Z           "evidence": [
2026-06-21T22:29:41.4452080Z             {
2026-06-21T22:29:41.4452210Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4452299Z               "line": 705
2026-06-21T22:29:41.4452384Z             },
2026-06-21T22:29:41.4452471Z             {
2026-06-21T22:29:41.4452588Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4452668Z               "line": 76
2026-06-21T22:29:41.4452754Z             },
2026-06-21T22:29:41.4452836Z             {
2026-06-21T22:29:41.4453055Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4453141Z               "line": 222
2026-06-21T22:29:41.4453217Z             },
2026-06-21T22:29:41.4453293Z             {
2026-06-21T22:29:41.4453408Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4453494Z               "line": 422
2026-06-21T22:29:41.4453579Z             },
2026-06-21T22:29:41.4453664Z             {
2026-06-21T22:29:41.4453771Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4453856Z               "line": 529
2026-06-21T22:29:41.4453936Z             },
2026-06-21T22:29:41.4454018Z             {
2026-06-21T22:29:41.4454118Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T22:29:41.4454204Z               "line": 39
2026-06-21T22:29:41.4454289Z             },
2026-06-21T22:29:41.4454362Z             {
2026-06-21T22:29:41.4454471Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4454557Z               "line": 301
2026-06-21T22:29:41.4454643Z             },
2026-06-21T22:29:41.4454725Z             {
2026-06-21T22:29:41.4454823Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T22:29:41.4454910Z               "line": 88
2026-06-21T22:29:41.4454991Z             },
2026-06-21T22:29:41.4455077Z             {
2026-06-21T22:29:41.4455190Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T22:29:41.4455280Z               "line": 98
2026-06-21T22:29:41.4455366Z             },
2026-06-21T22:29:41.4455450Z             {
2026-06-21T22:29:41.4455568Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4455655Z               "line": 233
2026-06-21T22:29:41.4455737Z             }
2026-06-21T22:29:41.4455827Z           ]
2026-06-21T22:29:41.4455912Z         },
2026-06-21T22:29:41.4455999Z         "int": {
2026-06-21T22:29:41.4456089Z           "complete": true,
2026-06-21T22:29:41.4456170Z           "evidence": [
2026-06-21T22:29:41.4456251Z             {
2026-06-21T22:29:41.4456390Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4456479Z               "line": 415
2026-06-21T22:29:41.4456566Z             },
2026-06-21T22:29:41.4456652Z             {
2026-06-21T22:29:41.4456766Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4456866Z               "line": 520
2026-06-21T22:29:41.4456943Z             },
2026-06-21T22:29:41.4457033Z             {
2026-06-21T22:29:41.4457152Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4457229Z               "line": 998
2026-06-21T22:29:41.4457320Z             },
2026-06-21T22:29:41.4457400Z             {
2026-06-21T22:29:41.4457520Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4457596Z               "line": 1383
2026-06-21T22:29:41.4457686Z             }
2026-06-21T22:29:41.4457766Z           ]
2026-06-21T22:29:41.4457847Z         },
2026-06-21T22:29:41.4457937Z         "unit": {
2026-06-21T22:29:41.4458031Z           "complete": true,
2026-06-21T22:29:41.4458126Z           "evidence": [
2026-06-21T22:29:41.4458203Z             {
2026-06-21T22:29:41.4458323Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4458407Z               "line": 639
2026-06-21T22:29:41.4458493Z             },
2026-06-21T22:29:41.4458661Z             {
2026-06-21T22:29:41.4458764Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T22:29:41.4458852Z               "line": 660
2026-06-21T22:29:41.4459037Z             },
2026-06-21T22:29:41.4459118Z             {
2026-06-21T22:29:41.4459233Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T22:29:41.4459328Z               "line": 768
2026-06-21T22:29:41.4459408Z             },
2026-06-21T22:29:41.4459486Z             {
2026-06-21T22:29:41.4459604Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T22:29:41.4459685Z               "line": 93
2026-06-21T22:29:41.4459771Z             },
2026-06-21T22:29:41.4459956Z             {
2026-06-21T22:29:41.4460077Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T22:29:41.4460173Z               "line": 224
2026-06-21T22:29:41.4460257Z             },
2026-06-21T22:29:41.4460334Z             {
2026-06-21T22:29:41.4460445Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T22:29:41.4463195Z               "line": 96
2026-06-21T22:29:41.4463310Z             },
2026-06-21T22:29:41.4463391Z             {
2026-06-21T22:29:41.4463529Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T22:29:41.4463624Z               "line": 146
2026-06-21T22:29:41.4463706Z             },
2026-06-21T22:29:41.4463787Z             {
2026-06-21T22:29:41.4463905Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4463993Z               "line": 698
2026-06-21T22:29:41.4464087Z             },
2026-06-21T22:29:41.4464158Z             {
2026-06-21T22:29:41.4464269Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T22:29:41.4464373Z               "line": 118
2026-06-21T22:29:41.4464449Z             },
2026-06-21T22:29:41.4464540Z             {
2026-06-21T22:29:41.4464651Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T22:29:41.4464740Z               "line": 148
2026-06-21T22:29:41.4464821Z             },
2026-06-21T22:29:41.4464903Z             {
2026-06-21T22:29:41.4465031Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4465117Z               "line": 928
2026-06-21T22:29:41.4465198Z             }
2026-06-21T22:29:41.4465281Z           ]
2026-06-21T22:29:41.4465360Z         }
2026-06-21T22:29:41.4465441Z       }
2026-06-21T22:29:41.4465528Z     },
2026-06-21T22:29:41.4465614Z     {
2026-06-21T22:29:41.4465698Z       "id": "REQ-REACH-2",
2026-06-21T22:29:41.4465860Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T22:29:41.4465950Z       "requiredStages": [],
2026-06-21T22:29:41.4466034Z       "stages": {
2026-06-21T22:29:41.4466119Z         "doc": {
2026-06-21T22:29:41.4466220Z           "complete": false,
2026-06-21T22:29:41.4466316Z           "evidence": []
2026-06-21T22:29:41.4466401Z         },
2026-06-21T22:29:41.4466486Z         "impl": {
2026-06-21T22:29:41.4466578Z           "complete": false,
2026-06-21T22:29:41.4466668Z           "evidence": []
2026-06-21T22:29:41.4466754Z         },
2026-06-21T22:29:41.4466840Z         "int": {
2026-06-21T22:29:41.4466926Z           "complete": false,
2026-06-21T22:29:41.4467011Z           "evidence": []
2026-06-21T22:29:41.4467096Z         },
2026-06-21T22:29:41.4467179Z         "unit": {
2026-06-21T22:29:41.4467264Z           "complete": false,
2026-06-21T22:29:41.4467345Z           "evidence": []
2026-06-21T22:29:41.4467431Z         }
2026-06-21T22:29:41.4467513Z       }
2026-06-21T22:29:41.4467598Z     },
2026-06-21T22:29:41.4467683Z     {
2026-06-21T22:29:41.4467784Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T22:29:41.4471341Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T22:29:41.4471700Z       "requiredStages": [
2026-06-21T22:29:41.4471781Z         "doc",
2026-06-21T22:29:41.4471870Z         "impl",
2026-06-21T22:29:41.4471957Z         "unit",
2026-06-21T22:29:41.4472034Z         "int"
2026-06-21T22:29:41.4472119Z       ],
2026-06-21T22:29:41.4472208Z       "stages": {
2026-06-21T22:29:41.4472291Z         "doc": {
2026-06-21T22:29:41.4472381Z           "complete": true,
2026-06-21T22:29:41.4472476Z           "evidence": [
2026-06-21T22:29:41.4472562Z             {
2026-06-21T22:29:41.4472654Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4472743Z               "line": 372
2026-06-21T22:29:41.4472828Z             }
2026-06-21T22:29:41.4472911Z           ]
2026-06-21T22:29:41.4472987Z         },
2026-06-21T22:29:41.4473076Z         "impl": {
2026-06-21T22:29:41.4473157Z           "complete": true,
2026-06-21T22:29:41.4473254Z           "evidence": [
2026-06-21T22:29:41.4473345Z             {
2026-06-21T22:29:41.4473457Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4473543Z               "line": 110
2026-06-21T22:29:41.4473624Z             }
2026-06-21T22:29:41.4473703Z           ]
2026-06-21T22:29:41.4473784Z         },
2026-06-21T22:29:41.4473870Z         "int": {
2026-06-21T22:29:41.4473970Z           "complete": true,
2026-06-21T22:29:41.4474060Z           "evidence": [
2026-06-21T22:29:41.4474141Z             {
2026-06-21T22:29:41.4474280Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T22:29:41.4474366Z               "line": 26
2026-06-21T22:29:41.4474446Z             }
2026-06-21T22:29:41.4474533Z           ]
2026-06-21T22:29:41.4474614Z         },
2026-06-21T22:29:41.4474695Z         "unit": {
2026-06-21T22:29:41.4474780Z           "complete": true,
2026-06-21T22:29:41.4474872Z           "evidence": [
2026-06-21T22:29:41.4474957Z             {
2026-06-21T22:29:41.4475066Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T22:29:41.4475162Z               "line": 320
2026-06-21T22:29:41.4475244Z             }
2026-06-21T22:29:41.4475334Z           ]
2026-06-21T22:29:41.4475419Z         }
2026-06-21T22:29:41.4475502Z       }
2026-06-21T22:29:41.4475591Z     },
2026-06-21T22:29:41.4475672Z     {
2026-06-21T22:29:41.4475768Z       "id": "REQ-REL-1",
2026-06-21T22:29:41.4476141Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T22:29:41.4476244Z       "requiredStages": [
2026-06-21T22:29:41.4476325Z         "doc",
2026-06-21T22:29:41.4476415Z         "impl"
2026-06-21T22:29:41.4476496Z       ],
2026-06-21T22:29:41.4476580Z       "stages": {
2026-06-21T22:29:41.4476660Z         "doc": {
2026-06-21T22:29:41.4476747Z           "complete": true,
2026-06-21T22:29:41.4476828Z           "evidence": [
2026-06-21T22:29:41.4476909Z             {
2026-06-21T22:29:41.4477129Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T22:29:41.4477224Z               "line": 3
2026-06-21T22:29:41.4477304Z             }
2026-06-21T22:29:41.4477386Z           ]
2026-06-21T22:29:41.4477472Z         },
2026-06-21T22:29:41.4477553Z         "impl": {
2026-06-21T22:29:41.4477643Z           "complete": true,
2026-06-21T22:29:41.4477815Z           "evidence": [
2026-06-21T22:29:41.4477900Z             {
2026-06-21T22:29:41.4478025Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T22:29:41.4478111Z               "line": 11
2026-06-21T22:29:41.4478196Z             },
2026-06-21T22:29:41.4478272Z             {
2026-06-21T22:29:41.4478378Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4478463Z               "line": 265
2026-06-21T22:29:41.4478553Z             }
2026-06-21T22:29:41.4478635Z           ]
2026-06-21T22:29:41.4478717Z         },
2026-06-21T22:29:41.4478797Z         "int": {
2026-06-21T22:29:41.4478886Z           "complete": false,
2026-06-21T22:29:41.4479161Z           "evidence": []
2026-06-21T22:29:41.4479246Z         },
2026-06-21T22:29:41.4479332Z         "unit": {
2026-06-21T22:29:41.4479424Z           "complete": false,
2026-06-21T22:29:41.4479514Z           "evidence": []
2026-06-21T22:29:41.4479599Z         }
2026-06-21T22:29:41.4479681Z       }
2026-06-21T22:29:41.4479771Z     },
2026-06-21T22:29:41.4479852Z     {
2026-06-21T22:29:41.4479938Z       "id": "REQ-REL-2",
2026-06-21T22:29:41.4480415Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T22:29:41.4480510Z       "requiredStages": [
2026-06-21T22:29:41.4480591Z         "impl",
2026-06-21T22:29:41.4480673Z         "int"
2026-06-21T22:29:41.4480758Z       ],
2026-06-21T22:29:41.4480834Z       "stages": {
2026-06-21T22:29:41.4480911Z         "doc": {
2026-06-21T22:29:41.4480992Z           "complete": true,
2026-06-21T22:29:41.4481096Z           "evidence": [
2026-06-21T22:29:41.4481177Z             {
2026-06-21T22:29:41.4481279Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T22:29:41.4481359Z               "line": 6
2026-06-21T22:29:41.4481445Z             }
2026-06-21T22:29:41.4481527Z           ]
2026-06-21T22:29:41.4481617Z         },
2026-06-21T22:29:41.4481735Z         "impl": {
2026-06-21T22:29:41.4481820Z           "complete": true,
2026-06-21T22:29:41.4481906Z           "evidence": [
2026-06-21T22:29:41.4482007Z             {
2026-06-21T22:29:41.4482120Z               "path": ".github/workflows/release.yml",
2026-06-21T22:29:41.4482207Z               "line": 16
2026-06-21T22:29:41.4482284Z             },
2026-06-21T22:29:41.4482364Z             {
2026-06-21T22:29:41.4482478Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4482560Z               "line": 352
2026-06-21T22:29:41.4482645Z             },
2026-06-21T22:29:41.4482721Z             {
2026-06-21T22:29:41.4482831Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4482932Z               "line": 426
2026-06-21T22:29:41.4483018Z             },
2026-06-21T22:29:41.4483098Z             {
2026-06-21T22:29:41.4483204Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4483289Z               "line": 588
2026-06-21T22:29:41.4483379Z             },
2026-06-21T22:29:41.4483461Z             {
2026-06-21T22:29:41.4483566Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4483650Z               "line": 720
2026-06-21T22:29:41.4483727Z             }
2026-06-21T22:29:41.4483815Z           ]
2026-06-21T22:29:41.4483905Z         },
2026-06-21T22:29:41.4483979Z         "int": {
2026-06-21T22:29:41.4484074Z           "complete": true,
2026-06-21T22:29:41.4484155Z           "evidence": [
2026-06-21T22:29:41.4484241Z             {
2026-06-21T22:29:41.4484368Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T22:29:41.4484458Z               "line": 13
2026-06-21T22:29:41.4484555Z             }
2026-06-21T22:29:41.4484635Z           ]
2026-06-21T22:29:41.4484720Z         },
2026-06-21T22:29:41.4484807Z         "unit": {
2026-06-21T22:29:41.4484907Z           "complete": false,
2026-06-21T22:29:41.4484997Z           "evidence": []
2026-06-21T22:29:41.4485079Z         }
2026-06-21T22:29:41.4485160Z       }
2026-06-21T22:29:41.4485345Z     },
2026-06-21T22:29:41.4485432Z     {
2026-06-21T22:29:41.4485522Z       "id": "REQ-REL-3",
2026-06-21T22:29:41.4485941Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T22:29:41.4486028Z       "requiredStages": [
2026-06-21T22:29:41.4486110Z         "impl",
2026-06-21T22:29:41.4486198Z         "unit"
2026-06-21T22:29:41.4486284Z       ],
2026-06-21T22:29:41.4486371Z       "stages": {
2026-06-21T22:29:41.4486457Z         "doc": {
2026-06-21T22:29:41.4486552Z           "complete": false,
2026-06-21T22:29:41.4486730Z           "evidence": []
2026-06-21T22:29:41.4486814Z         },
2026-06-21T22:29:41.4486904Z         "impl": {
2026-06-21T22:29:41.4486990Z           "complete": true,
2026-06-21T22:29:41.4487080Z           "evidence": [
2026-06-21T22:29:41.4487159Z             {
2026-06-21T22:29:41.4487287Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4487379Z               "line": 237
2026-06-21T22:29:41.4487464Z             },
2026-06-21T22:29:41.4487545Z             {
2026-06-21T22:29:41.4487650Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4487736Z               "line": 289
2026-06-21T22:29:41.4487817Z             },
2026-06-21T22:29:41.4487902Z             {
2026-06-21T22:29:41.4488009Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4488094Z               "line": 329
2026-06-21T22:29:41.4488179Z             },
2026-06-21T22:29:41.4488260Z             {
2026-06-21T22:29:41.4488370Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4488460Z               "line": 353
2026-06-21T22:29:41.4488546Z             },
2026-06-21T22:29:41.4488629Z             {
2026-06-21T22:29:41.4488737Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4488823Z               "line": 394
2026-06-21T22:29:41.4488900Z             }
2026-06-21T22:29:41.4489065Z           ]
2026-06-21T22:29:41.4489147Z         },
2026-06-21T22:29:41.4489229Z         "int": {
2026-06-21T22:29:41.4489320Z           "complete": false,
2026-06-21T22:29:41.4489414Z           "evidence": []
2026-06-21T22:29:41.4489493Z         },
2026-06-21T22:29:41.4489580Z         "unit": {
2026-06-21T22:29:41.4489679Z           "complete": true,
2026-06-21T22:29:41.4489759Z           "evidence": [
2026-06-21T22:29:41.4489839Z             {
2026-06-21T22:29:41.4489955Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4490045Z               "line": 1045
2026-06-21T22:29:41.4490130Z             },
2026-06-21T22:29:41.4490212Z             {
2026-06-21T22:29:41.4490322Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4490397Z               "line": 1104
2026-06-21T22:29:41.4490478Z             }
2026-06-21T22:29:41.4490556Z           ]
2026-06-21T22:29:41.4490641Z         }
2026-06-21T22:29:41.4490731Z       }
2026-06-21T22:29:41.4490823Z     },
2026-06-21T22:29:41.4490904Z     {
2026-06-21T22:29:41.4490999Z       "id": "REQ-RUN-PICKER",
2026-06-21T22:29:41.4495600Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T22:29:41.4495934Z       "requiredStages": [
2026-06-21T22:29:41.4496006Z         "doc",
2026-06-21T22:29:41.4496091Z         "impl",
2026-06-21T22:29:41.4496177Z         "unit"
2026-06-21T22:29:41.4496258Z       ],
2026-06-21T22:29:41.4496340Z       "stages": {
2026-06-21T22:29:41.4496425Z         "doc": {
2026-06-21T22:29:41.4496530Z           "complete": true,
2026-06-21T22:29:41.4496617Z           "evidence": [
2026-06-21T22:29:41.4496698Z             {
2026-06-21T22:29:41.4496788Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4496874Z               "line": 349
2026-06-21T22:29:41.4496946Z             }
2026-06-21T22:29:41.4497031Z           ]
2026-06-21T22:29:41.4497117Z         },
2026-06-21T22:29:41.4497198Z         "impl": {
2026-06-21T22:29:41.4497280Z           "complete": true,
2026-06-21T22:29:41.4497370Z           "evidence": [
2026-06-21T22:29:41.4497454Z             {
2026-06-21T22:29:41.4497559Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4497654Z               "line": 958
2026-06-21T22:29:41.4497729Z             },
2026-06-21T22:29:41.4497809Z             {
2026-06-21T22:29:41.4497900Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4497986Z               "line": 968
2026-06-21T22:29:41.4498071Z             },
2026-06-21T22:29:41.4498171Z             {
2026-06-21T22:29:41.4498291Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4498372Z               "line": 9
2026-06-21T22:29:41.4498453Z             },
2026-06-21T22:29:41.4498540Z             {
2026-06-21T22:29:41.4498644Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T22:29:41.4498724Z               "line": 67
2026-06-21T22:29:41.4498811Z             },
2026-06-21T22:29:41.4498893Z             {
2026-06-21T22:29:41.4499102Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T22:29:41.4499189Z               "line": 16
2026-06-21T22:29:41.4499273Z             },
2026-06-21T22:29:41.4499354Z             {
2026-06-21T22:29:41.4499475Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T22:29:41.4499551Z               "line": 254
2026-06-21T22:29:41.4499630Z             },
2026-06-21T22:29:41.4499707Z             {
2026-06-21T22:29:41.4499808Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4499903Z               "line": 11
2026-06-21T22:29:41.4499988Z             },
2026-06-21T22:29:41.4500073Z             {
2026-06-21T22:29:41.4500188Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4500276Z               "line": 115
2026-06-21T22:29:41.4500352Z             },
2026-06-21T22:29:41.4500433Z             {
2026-06-21T22:29:41.4500549Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4500634Z               "line": 554
2026-06-21T22:29:41.4500719Z             },
2026-06-21T22:29:41.4500797Z             {
2026-06-21T22:29:41.4500897Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4501001Z               "line": 635
2026-06-21T22:29:41.4501082Z             },
2026-06-21T22:29:41.4501163Z             {
2026-06-21T22:29:41.4501268Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4501363Z               "line": 694
2026-06-21T22:29:41.4501450Z             },
2026-06-21T22:29:41.4501530Z             {
2026-06-21T22:29:41.4501756Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4501840Z               "line": 747
2026-06-21T22:29:41.4501926Z             },
2026-06-21T22:29:41.4502012Z             {
2026-06-21T22:29:41.4502126Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4502217Z               "line": 785
2026-06-21T22:29:41.4502298Z             },
2026-06-21T22:29:41.4502385Z             {
2026-06-21T22:29:41.4502488Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4502579Z               "line": 8
2026-06-21T22:29:41.4502657Z             }
2026-06-21T22:29:41.4502729Z           ]
2026-06-21T22:29:41.4502921Z         },
2026-06-21T22:29:41.4503002Z         "int": {
2026-06-21T22:29:41.4503104Z           "complete": false,
2026-06-21T22:29:41.4503189Z           "evidence": []
2026-06-21T22:29:41.4503274Z         },
2026-06-21T22:29:41.4503356Z         "unit": {
2026-06-21T22:29:41.4503451Z           "complete": true,
2026-06-21T22:29:41.4503546Z           "evidence": [
2026-06-21T22:29:41.4503627Z             {
2026-06-21T22:29:41.4503732Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4503813Z               "line": 7638
2026-06-21T22:29:41.4503903Z             },
2026-06-21T22:29:41.4503981Z             {
2026-06-21T22:29:41.4504090Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4504175Z               "line": 7649
2026-06-21T22:29:41.4504257Z             },
2026-06-21T22:29:41.4504334Z             {
2026-06-21T22:29:41.4504447Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4504542Z               "line": 879
2026-06-21T22:29:41.4504625Z             },
2026-06-21T22:29:41.4504710Z             {
2026-06-21T22:29:41.4504829Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4504915Z               "line": 928
2026-06-21T22:29:41.4504996Z             },
2026-06-21T22:29:41.4505072Z             {
2026-06-21T22:29:41.4505176Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4505262Z               "line": 979
2026-06-21T22:29:41.4505347Z             },
2026-06-21T22:29:41.4505431Z             {
2026-06-21T22:29:41.4505531Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4505617Z               "line": 996
2026-06-21T22:29:41.4505699Z             },
2026-06-21T22:29:41.4505783Z             {
2026-06-21T22:29:41.4505894Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4505989Z               "line": 1005
2026-06-21T22:29:41.4506075Z             },
2026-06-21T22:29:41.4506155Z             {
2026-06-21T22:29:41.4506261Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4506356Z               "line": 1016
2026-06-21T22:29:41.4506432Z             },
2026-06-21T22:29:41.4506524Z             {
2026-06-21T22:29:41.4506633Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4506728Z               "line": 1038
2026-06-21T22:29:41.4506814Z             },
2026-06-21T22:29:41.4506905Z             {
2026-06-21T22:29:41.4507014Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4507109Z               "line": 1057
2026-06-21T22:29:41.4507201Z             },
2026-06-21T22:29:41.4507272Z             {
2026-06-21T22:29:41.4507386Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4507473Z               "line": 1107
2026-06-21T22:29:41.4507554Z             },
2026-06-21T22:29:41.4507638Z             {
2026-06-21T22:29:41.4507749Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4507830Z               "line": 1136
2026-06-21T22:29:41.4507920Z             },
2026-06-21T22:29:41.4508000Z             {
2026-06-21T22:29:41.4508110Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4508195Z               "line": 1149
2026-06-21T22:29:41.4508284Z             },
2026-06-21T22:29:41.4508369Z             {
2026-06-21T22:29:41.4508479Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4508646Z               "line": 1215
2026-06-21T22:29:41.4508731Z             },
2026-06-21T22:29:41.4508809Z             {
2026-06-21T22:29:41.4508928Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4509095Z               "line": 1256
2026-06-21T22:29:41.4509181Z             },
2026-06-21T22:29:41.4509262Z             {
2026-06-21T22:29:41.4509371Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4509453Z               "line": 1272
2026-06-21T22:29:41.4509533Z             },
2026-06-21T22:29:41.4509623Z             {
2026-06-21T22:29:41.4509725Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4509938Z               "line": 491
2026-06-21T22:29:41.4510030Z             },
2026-06-21T22:29:41.4510111Z             {
2026-06-21T22:29:41.4510224Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4510301Z               "line": 506
2026-06-21T22:29:41.4510393Z             },
2026-06-21T22:29:41.4510477Z             {
2026-06-21T22:29:41.4510591Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4510677Z               "line": 524
2026-06-21T22:29:41.4510762Z             },
2026-06-21T22:29:41.4510841Z             {
2026-06-21T22:29:41.4510950Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4511037Z               "line": 546
2026-06-21T22:29:41.4511119Z             },
2026-06-21T22:29:41.4511203Z             {
2026-06-21T22:29:41.4511318Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4511404Z               "line": 556
2026-06-21T22:29:41.4511494Z             },
2026-06-21T22:29:41.4511570Z             {
2026-06-21T22:29:41.4511681Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T22:29:41.4511766Z               "line": 582
2026-06-21T22:29:41.4511846Z             }
2026-06-21T22:29:41.4511928Z           ]
2026-06-21T22:29:41.4512005Z         }
2026-06-21T22:29:41.4512095Z       }
2026-06-21T22:29:41.4512180Z     },
2026-06-21T22:29:41.4512262Z     {
2026-06-21T22:29:41.4512363Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T22:29:41.4516949Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T22:29:41.4517074Z       "requiredStages": [
2026-06-21T22:29:41.4517150Z         "doc",
2026-06-21T22:29:41.4517241Z         "impl",
2026-06-21T22:29:41.4517326Z         "unit"
2026-06-21T22:29:41.4517522Z       ],
2026-06-21T22:29:41.4517603Z       "stages": {
2026-06-21T22:29:41.4517694Z         "doc": {
2026-06-21T22:29:41.4517785Z           "complete": true,
2026-06-21T22:29:41.4517870Z           "evidence": [
2026-06-21T22:29:41.4517951Z             {
2026-06-21T22:29:41.4518048Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4518137Z               "line": 390
2026-06-21T22:29:41.4518213Z             }
2026-06-21T22:29:41.4518294Z           ]
2026-06-21T22:29:41.4518372Z         },
2026-06-21T22:29:41.4518466Z         "impl": {
2026-06-21T22:29:41.4518551Z           "complete": true,
2026-06-21T22:29:41.4518636Z           "evidence": [
2026-06-21T22:29:41.4518802Z             {
2026-06-21T22:29:41.4518924Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4519097Z               "line": 39
2026-06-21T22:29:41.4519183Z             },
2026-06-21T22:29:41.4519258Z             {
2026-06-21T22:29:41.4519374Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4519460Z               "line": 79
2026-06-21T22:29:41.4519540Z             },
2026-06-21T22:29:41.4519616Z             {
2026-06-21T22:29:41.4519727Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4519812Z               "line": 162
2026-06-21T22:29:41.4519897Z             }
2026-06-21T22:29:41.4519984Z           ]
2026-06-21T22:29:41.4520065Z         },
2026-06-21T22:29:41.4520151Z         "int": {
2026-06-21T22:29:41.4520241Z           "complete": false,
2026-06-21T22:29:41.4520337Z           "evidence": []
2026-06-21T22:29:41.4520422Z         },
2026-06-21T22:29:41.4520508Z         "unit": {
2026-06-21T22:29:41.4520605Z           "complete": true,
2026-06-21T22:29:41.4520686Z           "evidence": [
2026-06-21T22:29:41.4520769Z             {
2026-06-21T22:29:41.4520876Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4520967Z               "line": 206
2026-06-21T22:29:41.4521043Z             },
2026-06-21T22:29:41.4521127Z             {
2026-06-21T22:29:41.4521256Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4521341Z               "line": 222
2026-06-21T22:29:41.4521429Z             },
2026-06-21T22:29:41.4521510Z             {
2026-06-21T22:29:41.4521631Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4521716Z               "line": 238
2026-06-21T22:29:41.4521801Z             },
2026-06-21T22:29:41.4521883Z             {
2026-06-21T22:29:41.4521997Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4522087Z               "line": 251
2026-06-21T22:29:41.4522173Z             },
2026-06-21T22:29:41.4522270Z             {
2026-06-21T22:29:41.4522383Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T22:29:41.4522474Z               "line": 258
2026-06-21T22:29:41.4522565Z             }
2026-06-21T22:29:41.4522645Z           ]
2026-06-21T22:29:41.4522726Z         }
2026-06-21T22:29:41.4522803Z       }
2026-06-21T22:29:41.4522895Z     },
2026-06-21T22:29:41.4522974Z     {
2026-06-21T22:29:41.4523070Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T22:29:41.4523252Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T22:29:41.4523337Z       "requiredStages": [
2026-06-21T22:29:41.4523423Z         "impl",
2026-06-21T22:29:41.4523500Z         "unit"
2026-06-21T22:29:41.4523581Z       ],
2026-06-21T22:29:41.4523666Z       "stages": {
2026-06-21T22:29:41.4523752Z         "doc": {
2026-06-21T22:29:41.4523853Z           "complete": false,
2026-06-21T22:29:41.4523937Z           "evidence": []
2026-06-21T22:29:41.4524023Z         },
2026-06-21T22:29:41.4524099Z         "impl": {
2026-06-21T22:29:41.4524190Z           "complete": true,
2026-06-21T22:29:41.4524276Z           "evidence": [
2026-06-21T22:29:41.4524361Z             {
2026-06-21T22:29:41.4524476Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4524547Z               "line": 18
2026-06-21T22:29:41.4524637Z             },
2026-06-21T22:29:41.4524824Z             {
2026-06-21T22:29:41.4524943Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4525033Z               "line": 35
2026-06-21T22:29:41.4525120Z             },
2026-06-21T22:29:41.4525210Z             {
2026-06-21T22:29:41.4525319Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4525401Z               "line": 72
2026-06-21T22:29:41.4525482Z             }
2026-06-21T22:29:41.4525568Z           ]
2026-06-21T22:29:41.4525649Z         },
2026-06-21T22:29:41.4525740Z         "int": {
2026-06-21T22:29:41.4525821Z           "complete": false,
2026-06-21T22:29:41.4525911Z           "evidence": []
2026-06-21T22:29:41.4526107Z         },
2026-06-21T22:29:41.4526192Z         "unit": {
2026-06-21T22:29:41.4526281Z           "complete": true,
2026-06-21T22:29:41.4526358Z           "evidence": [
2026-06-21T22:29:41.4526453Z             {
2026-06-21T22:29:41.4526571Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4526670Z               "line": 239
2026-06-21T22:29:41.4526762Z             },
2026-06-21T22:29:41.4526842Z             {
2026-06-21T22:29:41.4526956Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4527043Z               "line": 256
2026-06-21T22:29:41.4527129Z             },
2026-06-21T22:29:41.4527209Z             {
2026-06-21T22:29:41.4527319Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4527405Z               "line": 265
2026-06-21T22:29:41.4527476Z             }
2026-06-21T22:29:41.4527562Z           ]
2026-06-21T22:29:41.4527639Z         }
2026-06-21T22:29:41.4527724Z       }
2026-06-21T22:29:41.4527819Z     },
2026-06-21T22:29:41.4527895Z     {
2026-06-21T22:29:41.4528002Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T22:29:41.4528144Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T22:29:41.4528229Z       "requiredStages": [
2026-06-21T22:29:41.4528317Z         "impl",
2026-06-21T22:29:41.4528411Z         "unit"
2026-06-21T22:29:41.4528497Z       ],
2026-06-21T22:29:41.4528578Z       "stages": {
2026-06-21T22:29:41.4528660Z         "doc": {
2026-06-21T22:29:41.4528744Z           "complete": false,
2026-06-21T22:29:41.4528840Z           "evidence": []
2026-06-21T22:29:41.4528912Z         },
2026-06-21T22:29:41.4529078Z         "impl": {
2026-06-21T22:29:41.4529172Z           "complete": true,
2026-06-21T22:29:41.4529254Z           "evidence": [
2026-06-21T22:29:41.4529343Z             {
2026-06-21T22:29:41.4529452Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4529547Z               "line": 598
2026-06-21T22:29:41.4529624Z             }
2026-06-21T22:29:41.4529710Z           ]
2026-06-21T22:29:41.4529790Z         },
2026-06-21T22:29:41.4529861Z         "int": {
2026-06-21T22:29:41.4529958Z           "complete": false,
2026-06-21T22:29:41.4530039Z           "evidence": []
2026-06-21T22:29:41.4530123Z         },
2026-06-21T22:29:41.4530216Z         "unit": {
2026-06-21T22:29:41.4530306Z           "complete": true,
2026-06-21T22:29:41.4530386Z           "evidence": [
2026-06-21T22:29:41.4530472Z             {
2026-06-21T22:29:41.4530592Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4530672Z               "line": 967
2026-06-21T22:29:41.4530758Z             }
2026-06-21T22:29:41.4530840Z           ]
2026-06-21T22:29:41.4530921Z         }
2026-06-21T22:29:41.4531015Z       }
2026-06-21T22:29:41.4531087Z     },
2026-06-21T22:29:41.4531175Z     {
2026-06-21T22:29:41.4531260Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T22:29:41.4531446Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T22:29:41.4531541Z       "requiredStages": [
2026-06-21T22:29:41.4531621Z         "impl",
2026-06-21T22:29:41.4531701Z         "unit",
2026-06-21T22:29:41.4531787Z         "int"
2026-06-21T22:29:41.4531873Z       ],
2026-06-21T22:29:41.4531957Z       "stages": {
2026-06-21T22:29:41.4532042Z         "doc": {
2026-06-21T22:29:41.4532253Z           "complete": false,
2026-06-21T22:29:41.4532333Z           "evidence": []
2026-06-21T22:29:41.4532419Z         },
2026-06-21T22:29:41.4532506Z         "impl": {
2026-06-21T22:29:41.4532601Z           "complete": true,
2026-06-21T22:29:41.4532681Z           "evidence": [
2026-06-21T22:29:41.4532753Z             {
2026-06-21T22:29:41.4532868Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.4532958Z               "line": 24
2026-06-21T22:29:41.4533044Z             },
2026-06-21T22:29:41.4533125Z             {
2026-06-21T22:29:41.4533229Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4533315Z               "line": 22
2026-06-21T22:29:41.4533507Z             }
2026-06-21T22:29:41.4533588Z           ]
2026-06-21T22:29:41.4533668Z         },
2026-06-21T22:29:41.4533760Z         "int": {
2026-06-21T22:29:41.4533840Z           "complete": true,
2026-06-21T22:29:41.4533926Z           "evidence": [
2026-06-21T22:29:41.4534007Z             {
2026-06-21T22:29:41.4534132Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.4534216Z               "line": 260
2026-06-21T22:29:41.4534298Z             }
2026-06-21T22:29:41.4534380Z           ]
2026-06-21T22:29:41.4534465Z         },
2026-06-21T22:29:41.4534549Z         "unit": {
2026-06-21T22:29:41.4534639Z           "complete": true,
2026-06-21T22:29:41.4534741Z           "evidence": [
2026-06-21T22:29:41.4534813Z             {
2026-06-21T22:29:41.4534921Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.4535007Z               "line": 171
2026-06-21T22:29:41.4535084Z             },
2026-06-21T22:29:41.4535174Z             {
2026-06-21T22:29:41.4535278Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.4535375Z               "line": 200
2026-06-21T22:29:41.4535461Z             },
2026-06-21T22:29:41.4535545Z             {
2026-06-21T22:29:41.4535656Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T22:29:41.4535742Z               "line": 220
2026-06-21T22:29:41.4535832Z             },
2026-06-21T22:29:41.4535913Z             {
2026-06-21T22:29:41.4536024Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4536104Z               "line": 199
2026-06-21T22:29:41.4536194Z             },
2026-06-21T22:29:41.4536281Z             {
2026-06-21T22:29:41.4536390Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4536490Z               "line": 219
2026-06-21T22:29:41.4536571Z             },
2026-06-21T22:29:41.4536663Z             {
2026-06-21T22:29:41.4536766Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4536851Z               "line": 244
2026-06-21T22:29:41.4536947Z             },
2026-06-21T22:29:41.4537027Z             {
2026-06-21T22:29:41.4537135Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4537221Z               "line": 276
2026-06-21T22:29:41.4540160Z             },
2026-06-21T22:29:41.4540270Z             {
2026-06-21T22:29:41.4540412Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4540513Z               "line": 297
2026-06-21T22:29:41.4540589Z             },
2026-06-21T22:29:41.4540679Z             {
2026-06-21T22:29:41.4540799Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T22:29:41.4540894Z               "line": 324
2026-06-21T22:29:41.4540980Z             }
2026-06-21T22:29:41.4541061Z           ]
2026-06-21T22:29:41.4541147Z         }
2026-06-21T22:29:41.4541232Z       }
2026-06-21T22:29:41.4541318Z     },
2026-06-21T22:29:41.4541395Z     {
2026-06-21T22:29:41.4541500Z       "id": "REQ-SEAM-INJECT",
2026-06-21T22:29:41.4541676Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T22:29:41.4541777Z       "requiredStages": [
2026-06-21T22:29:41.4541862Z         "impl",
2026-06-21T22:29:41.4541943Z         "unit"
2026-06-21T22:29:41.4542030Z       ],
2026-06-21T22:29:41.4542115Z       "stages": {
2026-06-21T22:29:41.4542200Z         "doc": {
2026-06-21T22:29:41.4542442Z           "complete": false,
2026-06-21T22:29:41.4542526Z           "evidence": []
2026-06-21T22:29:41.4542611Z         },
2026-06-21T22:29:41.4542698Z         "impl": {
2026-06-21T22:29:41.4542784Z           "complete": true,
2026-06-21T22:29:41.4542865Z           "evidence": [
2026-06-21T22:29:41.4542945Z             {
2026-06-21T22:29:41.4543071Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4543147Z               "line": 19
2026-06-21T22:29:41.4543226Z             },
2026-06-21T22:29:41.4543313Z             {
2026-06-21T22:29:41.4543433Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4543613Z               "line": 111
2026-06-21T22:29:41.4543705Z             }
2026-06-21T22:29:41.4543789Z           ]
2026-06-21T22:29:41.4543875Z         },
2026-06-21T22:29:41.4543957Z         "int": {
2026-06-21T22:29:41.4544043Z           "complete": false,
2026-06-21T22:29:41.4544138Z           "evidence": []
2026-06-21T22:29:41.4544224Z         },
2026-06-21T22:29:41.4544315Z         "unit": {
2026-06-21T22:29:41.4544405Z           "complete": true,
2026-06-21T22:29:41.4544482Z           "evidence": [
2026-06-21T22:29:41.4544567Z             {
2026-06-21T22:29:41.4544682Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4544767Z               "line": 345
2026-06-21T22:29:41.4544848Z             },
2026-06-21T22:29:41.4544931Z             {
2026-06-21T22:29:41.4545039Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4545124Z               "line": 365
2026-06-21T22:29:41.4545209Z             }
2026-06-21T22:29:41.4545296Z           ]
2026-06-21T22:29:41.4545382Z         }
2026-06-21T22:29:41.4545462Z       }
2026-06-21T22:29:41.4545543Z     },
2026-06-21T22:29:41.4545630Z     {
2026-06-21T22:29:41.4545730Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T22:29:41.4545868Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T22:29:41.4545959Z       "requiredStages": [
2026-06-21T22:29:41.4546068Z         "impl",
2026-06-21T22:29:41.4546149Z         "unit"
2026-06-21T22:29:41.4546236Z       ],
2026-06-21T22:29:41.4546321Z       "stages": {
2026-06-21T22:29:41.4546406Z         "doc": {
2026-06-21T22:29:41.4546502Z           "complete": false,
2026-06-21T22:29:41.4546579Z           "evidence": []
2026-06-21T22:29:41.4546668Z         },
2026-06-21T22:29:41.4546749Z         "impl": {
2026-06-21T22:29:41.4546842Z           "complete": true,
2026-06-21T22:29:41.4546932Z           "evidence": [
2026-06-21T22:29:41.4547016Z             {
2026-06-21T22:29:41.4547126Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4547209Z               "line": 18
2026-06-21T22:29:41.4547293Z             },
2026-06-21T22:29:41.4547378Z             {
2026-06-21T22:29:41.4547488Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4547583Z               "line": 431
2026-06-21T22:29:41.4547657Z             }
2026-06-21T22:29:41.4547742Z           ]
2026-06-21T22:29:41.4547819Z         },
2026-06-21T22:29:41.4547911Z         "int": {
2026-06-21T22:29:41.4548000Z           "complete": false,
2026-06-21T22:29:41.4548091Z           "evidence": []
2026-06-21T22:29:41.4548178Z         },
2026-06-21T22:29:41.4548264Z         "unit": {
2026-06-21T22:29:41.4548363Z           "complete": true,
2026-06-21T22:29:41.4548449Z           "evidence": [
2026-06-21T22:29:41.4548535Z             {
2026-06-21T22:29:41.4548644Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4548725Z               "line": 881
2026-06-21T22:29:41.4548812Z             },
2026-06-21T22:29:41.4548892Z             {
2026-06-21T22:29:41.4549112Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4549197Z               "line": 891
2026-06-21T22:29:41.4549278Z             }
2026-06-21T22:29:41.4549364Z           ]
2026-06-21T22:29:41.4549456Z         }
2026-06-21T22:29:41.4549550Z       }
2026-06-21T22:29:41.4549621Z     },
2026-06-21T22:29:41.4549699Z     {
2026-06-21T22:29:41.4549917Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T22:29:41.4550062Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T22:29:41.4550151Z       "requiredStages": [
2026-06-21T22:29:41.4550241Z         "impl",
2026-06-21T22:29:41.4550321Z         "unit",
2026-06-21T22:29:41.4550403Z         "int"
2026-06-21T22:29:41.4550487Z       ],
2026-06-21T22:29:41.4550572Z       "stages": {
2026-06-21T22:29:41.4550648Z         "doc": {
2026-06-21T22:29:41.4550739Z           "complete": false,
2026-06-21T22:29:41.4550830Z           "evidence": []
2026-06-21T22:29:41.4550910Z         },
2026-06-21T22:29:41.4551001Z         "impl": {
2026-06-21T22:29:41.4551211Z           "complete": true,
2026-06-21T22:29:41.4551297Z           "evidence": [
2026-06-21T22:29:41.4551388Z             {
2026-06-21T22:29:41.4551497Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.4551587Z               "line": 19
2026-06-21T22:29:41.4551665Z             },
2026-06-21T22:29:41.4551759Z             {
2026-06-21T22:29:41.4551864Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T22:29:41.4551950Z               "line": 12
2026-06-21T22:29:41.4552036Z             },
2026-06-21T22:29:41.4552121Z             {
2026-06-21T22:29:41.4552236Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4552328Z               "line": 301
2026-06-21T22:29:41.4552408Z             }
2026-06-21T22:29:41.4552484Z           ]
2026-06-21T22:29:41.4552566Z         },
2026-06-21T22:29:41.4552652Z         "int": {
2026-06-21T22:29:41.4552737Z           "complete": true,
2026-06-21T22:29:41.4552821Z           "evidence": [
2026-06-21T22:29:41.4552917Z             {
2026-06-21T22:29:41.4553040Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.4553125Z               "line": 259
2026-06-21T22:29:41.4553205Z             }
2026-06-21T22:29:41.4553291Z           ]
2026-06-21T22:29:41.4553373Z         },
2026-06-21T22:29:41.4553458Z         "unit": {
2026-06-21T22:29:41.4553568Z           "complete": true,
2026-06-21T22:29:41.4553659Z           "evidence": [
2026-06-21T22:29:41.4553744Z             {
2026-06-21T22:29:41.4553854Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.4553945Z               "line": 195
2026-06-21T22:29:41.4554026Z             },
2026-06-21T22:29:41.4554111Z             {
2026-06-21T22:29:41.4554227Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.4554312Z               "line": 202
2026-06-21T22:29:41.4554393Z             },
2026-06-21T22:29:41.4554469Z             {
2026-06-21T22:29:41.4554584Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T22:29:41.4554665Z               "line": 225
2026-06-21T22:29:41.4554750Z             },
2026-06-21T22:29:41.4554837Z             {
2026-06-21T22:29:41.4554941Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T22:29:41.4555032Z               "line": 106
2026-06-21T22:29:41.4555113Z             },
2026-06-21T22:29:41.4555200Z             {
2026-06-21T22:29:41.4555303Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T22:29:41.4555390Z               "line": 137
2026-06-21T22:29:41.4555472Z             },
2026-06-21T22:29:41.4555553Z             {
2026-06-21T22:29:41.4555665Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T22:29:41.4555755Z               "line": 161
2026-06-21T22:29:41.4555841Z             }
2026-06-21T22:29:41.4555924Z           ]
2026-06-21T22:29:41.4556008Z         }
2026-06-21T22:29:41.4556089Z       }
2026-06-21T22:29:41.4556171Z     },
2026-06-21T22:29:41.4556257Z     {
2026-06-21T22:29:41.4556351Z       "id": "REQ-SEAM-RESUME",
2026-06-21T22:29:41.4556547Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T22:29:41.4556633Z       "requiredStages": [
2026-06-21T22:29:41.4556714Z         "impl",
2026-06-21T22:29:41.4556805Z         "unit"
2026-06-21T22:29:41.4556890Z       ],
2026-06-21T22:29:41.4556976Z       "stages": {
2026-06-21T22:29:41.4557144Z         "doc": {
2026-06-21T22:29:41.4557238Z           "complete": false,
2026-06-21T22:29:41.4557324Z           "evidence": []
2026-06-21T22:29:41.4557407Z         },
2026-06-21T22:29:41.4557492Z         "impl": {
2026-06-21T22:29:41.4557576Z           "complete": true,
2026-06-21T22:29:41.4557668Z           "evidence": [
2026-06-21T22:29:41.4557740Z             {
2026-06-21T22:29:41.4557858Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.4557934Z               "line": 19
2026-06-21T22:29:41.4558019Z             }
2026-06-21T22:29:41.4558100Z           ]
2026-06-21T22:29:41.4558180Z         },
2026-06-21T22:29:41.4558346Z         "int": {
2026-06-21T22:29:41.4558433Z           "complete": false,
2026-06-21T22:29:41.4558528Z           "evidence": []
2026-06-21T22:29:41.4558608Z         },
2026-06-21T22:29:41.4558690Z         "unit": {
2026-06-21T22:29:41.4558785Z           "complete": true,
2026-06-21T22:29:41.4558870Z           "evidence": [
2026-06-21T22:29:41.4559043Z             {
2026-06-21T22:29:41.4559153Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.4559242Z               "line": 201
2026-06-21T22:29:41.4559324Z             },
2026-06-21T22:29:41.4559401Z             {
2026-06-21T22:29:41.4559509Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.4559591Z               "line": 223
2026-06-21T22:29:41.4559677Z             },
2026-06-21T22:29:41.4559757Z             {
2026-06-21T22:29:41.4559862Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T22:29:41.4559944Z               "line": 244
2026-06-21T22:29:41.4560021Z             }
2026-06-21T22:29:41.4560114Z           ]
2026-06-21T22:29:41.4560196Z         }
2026-06-21T22:29:41.4560288Z       }
2026-06-21T22:29:41.4560350Z     },
2026-06-21T22:29:41.4560434Z     {
2026-06-21T22:29:41.4560535Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T22:29:41.4560627Z       "title": "spawn-session seam",
2026-06-21T22:29:41.4560711Z       "requiredStages": [
2026-06-21T22:29:41.4560796Z         "impl",
2026-06-21T22:29:41.4560871Z         "unit"
2026-06-21T22:29:41.4560953Z       ],
2026-06-21T22:29:41.4561033Z       "stages": {
2026-06-21T22:29:41.4561108Z         "doc": {
2026-06-21T22:29:41.4561203Z           "complete": false,
2026-06-21T22:29:41.4561290Z           "evidence": []
2026-06-21T22:29:41.4561371Z         },
2026-06-21T22:29:41.4561446Z         "impl": {
2026-06-21T22:29:41.4561537Z           "complete": true,
2026-06-21T22:29:41.4561629Z           "evidence": [
2026-06-21T22:29:41.4561710Z             {
2026-06-21T22:29:41.4561837Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4561934Z               "line": 20
2026-06-21T22:29:41.4562015Z             }
2026-06-21T22:29:41.4562100Z           ]
2026-06-21T22:29:41.4562186Z         },
2026-06-21T22:29:41.4562268Z         "int": {
2026-06-21T22:29:41.4562353Z           "complete": false,
2026-06-21T22:29:41.4562439Z           "evidence": []
2026-06-21T22:29:41.4562525Z         },
2026-06-21T22:29:41.4562611Z         "unit": {
2026-06-21T22:29:41.4562710Z           "complete": true,
2026-06-21T22:29:41.4562786Z           "evidence": [
2026-06-21T22:29:41.4562874Z             {
2026-06-21T22:29:41.4562986Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4563068Z               "line": 608
2026-06-21T22:29:41.4563155Z             },
2026-06-21T22:29:41.4563231Z             {
2026-06-21T22:29:41.4563353Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4563443Z               "line": 615
2026-06-21T22:29:41.4563525Z             },
2026-06-21T22:29:41.4563604Z             {
2026-06-21T22:29:41.4563736Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4563823Z               "line": 721
2026-06-21T22:29:41.4563900Z             },
2026-06-21T22:29:41.4563985Z             {
2026-06-21T22:29:41.4564090Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4564276Z               "line": 727
2026-06-21T22:29:41.4564361Z             },
2026-06-21T22:29:41.4564438Z             {
2026-06-21T22:29:41.4564558Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4564638Z               "line": 752
2026-06-21T22:29:41.4564724Z             },
2026-06-21T22:29:41.4564806Z             {
2026-06-21T22:29:41.4564919Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T22:29:41.4565005Z               "line": 789
2026-06-21T22:29:41.4565082Z             }
2026-06-21T22:29:41.4565163Z           ]
2026-06-21T22:29:41.4565244Z         }
2026-06-21T22:29:41.4565329Z       }
2026-06-21T22:29:41.4565402Z     },
2026-06-21T22:29:41.4565606Z     {
2026-06-21T22:29:41.4565702Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T22:29:41.4565868Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T22:29:41.4565964Z       "requiredStages": [
2026-06-21T22:29:41.4566051Z         "impl",
2026-06-21T22:29:41.4566136Z         "unit"
2026-06-21T22:29:41.4566230Z       ],
2026-06-21T22:29:41.4566306Z       "stages": {
2026-06-21T22:29:41.4566383Z         "doc": {
2026-06-21T22:29:41.4566474Z           "complete": false,
2026-06-21T22:29:41.4566559Z           "evidence": []
2026-06-21T22:29:41.4566640Z         },
2026-06-21T22:29:41.4566721Z         "impl": {
2026-06-21T22:29:41.4566802Z           "complete": true,
2026-06-21T22:29:41.4566883Z           "evidence": [
2026-06-21T22:29:41.4566969Z             {
2026-06-21T22:29:41.4567098Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4567193Z               "line": 28
2026-06-21T22:29:41.4567274Z             },
2026-06-21T22:29:41.4567360Z             {
2026-06-21T22:29:41.4567484Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4567569Z               "line": 88
2026-06-21T22:29:41.4567652Z             }
2026-06-21T22:29:41.4567733Z           ]
2026-06-21T22:29:41.4567818Z         },
2026-06-21T22:29:41.4567898Z         "int": {
2026-06-21T22:29:41.4568000Z           "complete": false,
2026-06-21T22:29:41.4568085Z           "evidence": []
2026-06-21T22:29:41.4568166Z         },
2026-06-21T22:29:41.4568252Z         "unit": {
2026-06-21T22:29:41.4568348Z           "complete": true,
2026-06-21T22:29:41.4568442Z           "evidence": [
2026-06-21T22:29:41.4568518Z             {
2026-06-21T22:29:41.4568646Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4568726Z               "line": 326
2026-06-21T22:29:41.4568806Z             },
2026-06-21T22:29:41.4568891Z             {
2026-06-21T22:29:41.4569107Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4569201Z               "line": 337
2026-06-21T22:29:41.4569283Z             }
2026-06-21T22:29:41.4569359Z           ]
2026-06-21T22:29:41.4569440Z         }
2026-06-21T22:29:41.4569530Z       }
2026-06-21T22:29:41.4569613Z     },
2026-06-21T22:29:41.4569698Z     {
2026-06-21T22:29:41.4569783Z       "id": "REQ-SEC-1",
2026-06-21T22:29:41.4570170Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T22:29:41.4570266Z       "requiredStages": [
2026-06-21T22:29:41.4570346Z         "impl",
2026-06-21T22:29:41.4570432Z         "unit"
2026-06-21T22:29:41.4570504Z       ],
2026-06-21T22:29:41.4570586Z       "stages": {
2026-06-21T22:29:41.4570665Z         "doc": {
2026-06-21T22:29:41.4570746Z           "complete": false,
2026-06-21T22:29:41.4570848Z           "evidence": []
2026-06-21T22:29:41.4570929Z         },
2026-06-21T22:29:41.4571013Z         "impl": {
2026-06-21T22:29:41.4571110Z           "complete": true,
2026-06-21T22:29:41.4571196Z           "evidence": [
2026-06-21T22:29:41.4571277Z             {
2026-06-21T22:29:41.4571399Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4571480Z               "line": 86
2026-06-21T22:29:41.4571561Z             },
2026-06-21T22:29:41.4571744Z             {
2026-06-21T22:29:41.4571855Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4571946Z               "line": 116
2026-06-21T22:29:41.4572035Z             },
2026-06-21T22:29:41.4572117Z             {
2026-06-21T22:29:41.4572231Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4572316Z               "line": 130
2026-06-21T22:29:41.4572397Z             },
2026-06-21T22:29:41.4572480Z             {
2026-06-21T22:29:41.4572594Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4572684Z               "line": 109
2026-06-21T22:29:41.4572761Z             },
2026-06-21T22:29:41.4572937Z             {
2026-06-21T22:29:41.4573056Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4573143Z               "line": 130
2026-06-21T22:29:41.4573227Z             },
2026-06-21T22:29:41.4573308Z             {
2026-06-21T22:29:41.4573419Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4573514Z               "line": 143
2026-06-21T22:29:41.4573595Z             },
2026-06-21T22:29:41.4573676Z             {
2026-06-21T22:29:41.4573796Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4573885Z               "line": 209
2026-06-21T22:29:41.4573965Z             },
2026-06-21T22:29:41.4574051Z             {
2026-06-21T22:29:41.4574160Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4574245Z               "line": 235
2026-06-21T22:29:41.4574325Z             },
2026-06-21T22:29:41.4574412Z             {
2026-06-21T22:29:41.4574517Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4574607Z               "line": 5295
2026-06-21T22:29:41.4574688Z             }
2026-06-21T22:29:41.4574765Z           ]
2026-06-21T22:29:41.4574850Z         },
2026-06-21T22:29:41.4574936Z         "int": {
2026-06-21T22:29:41.4575028Z           "complete": false,
2026-06-21T22:29:41.4575118Z           "evidence": []
2026-06-21T22:29:41.4575207Z         },
2026-06-21T22:29:41.4575299Z         "unit": {
2026-06-21T22:29:41.4575380Z           "complete": true,
2026-06-21T22:29:41.4575475Z           "evidence": [
2026-06-21T22:29:41.4575556Z             {
2026-06-21T22:29:41.4575672Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4575752Z               "line": 142
2026-06-21T22:29:41.4575833Z             },
2026-06-21T22:29:41.4575923Z             {
2026-06-21T22:29:41.4576033Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4576123Z               "line": 194
2026-06-21T22:29:41.4576205Z             },
2026-06-21T22:29:41.4576282Z             {
2026-06-21T22:29:41.4576400Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T22:29:41.4576476Z               "line": 235
2026-06-21T22:29:41.4576563Z             },
2026-06-21T22:29:41.4576640Z             {
2026-06-21T22:29:41.4576761Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T22:29:41.4576846Z               "line": 140
2026-06-21T22:29:41.4576933Z             },
2026-06-21T22:29:41.4577015Z             {
2026-06-21T22:29:41.4577119Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4577209Z               "line": 247
2026-06-21T22:29:41.4577291Z             },
2026-06-21T22:29:41.4577372Z             {
2026-06-21T22:29:41.4577476Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4577563Z               "line": 277
2026-06-21T22:29:41.4577644Z             },
2026-06-21T22:29:41.4577720Z             {
2026-06-21T22:29:41.4577834Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4577916Z               "line": 310
2026-06-21T22:29:41.4578006Z             },
2026-06-21T22:29:41.4578087Z             {
2026-06-21T22:29:41.4578192Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4578283Z               "line": 329
2026-06-21T22:29:41.4578363Z             },
2026-06-21T22:29:41.4578449Z             {
2026-06-21T22:29:41.4578631Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4578721Z               "line": 362
2026-06-21T22:29:41.4578812Z             },
2026-06-21T22:29:41.4578889Z             {
2026-06-21T22:29:41.4579087Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T22:29:41.4579173Z               "line": 386
2026-06-21T22:29:41.4579258Z             },
2026-06-21T22:29:41.4579338Z             {
2026-06-21T22:29:41.4579437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4579523Z               "line": 8296
2026-06-21T22:29:41.4579596Z             }
2026-06-21T22:29:41.4579681Z           ]
2026-06-21T22:29:41.4579868Z         }
2026-06-21T22:29:41.4579958Z       }
2026-06-21T22:29:41.4580033Z     },
2026-06-21T22:29:41.4580120Z     {
2026-06-21T22:29:41.4580211Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T22:29:41.4583836Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T22:29:41.4583965Z       "requiredStages": [
2026-06-21T22:29:41.4584056Z         "impl",
2026-06-21T22:29:41.4584140Z         "unit",
2026-06-21T22:29:41.4584217Z         "int"
2026-06-21T22:29:41.4584304Z       ],
2026-06-21T22:29:41.4584384Z       "stages": {
2026-06-21T22:29:41.4584464Z         "doc": {
2026-06-21T22:29:41.4584558Z           "complete": false,
2026-06-21T22:29:41.4584645Z           "evidence": []
2026-06-21T22:29:41.4584730Z         },
2026-06-21T22:29:41.4584805Z         "impl": {
2026-06-21T22:29:41.4584900Z           "complete": true,
2026-06-21T22:29:41.4584991Z           "evidence": [
2026-06-21T22:29:41.4585077Z             {
2026-06-21T22:29:41.4585186Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4585273Z               "line": 1144
2026-06-21T22:29:41.4585353Z             },
2026-06-21T22:29:41.4585434Z             {
2026-06-21T22:29:41.4585559Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4585644Z               "line": 1942
2026-06-21T22:29:41.4585730Z             },
2026-06-21T22:29:41.4585806Z             {
2026-06-21T22:29:41.4585912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4585997Z               "line": 2850
2026-06-21T22:29:41.4586087Z             }
2026-06-21T22:29:41.4586168Z           ]
2026-06-21T22:29:41.4586251Z         },
2026-06-21T22:29:41.4586340Z         "int": {
2026-06-21T22:29:41.4586431Z           "complete": true,
2026-06-21T22:29:41.4586522Z           "evidence": [
2026-06-21T22:29:41.4586603Z             {
2026-06-21T22:29:41.4586736Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.4586818Z               "line": 189
2026-06-21T22:29:41.4586895Z             },
2026-06-21T22:29:41.4586969Z             {
2026-06-21T22:29:41.4587079Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T22:29:41.4587284Z               "line": 524
2026-06-21T22:29:41.4587369Z             }
2026-06-21T22:29:41.4587450Z           ]
2026-06-21T22:29:41.4587536Z         },
2026-06-21T22:29:41.4587622Z         "unit": {
2026-06-21T22:29:41.4587722Z           "complete": true,
2026-06-21T22:29:41.4587813Z           "evidence": [
2026-06-21T22:29:41.4587899Z             {
2026-06-21T22:29:41.4588008Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.4588094Z               "line": 980
2026-06-21T22:29:41.4588180Z             },
2026-06-21T22:29:41.4588252Z             {
2026-06-21T22:29:41.4588356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4588523Z               "line": 7486
2026-06-21T22:29:41.4588599Z             }
2026-06-21T22:29:41.4588685Z           ]
2026-06-21T22:29:41.4588772Z         }
2026-06-21T22:29:41.4588857Z       }
2026-06-21T22:29:41.4588938Z     },
2026-06-21T22:29:41.4589101Z     {
2026-06-21T22:29:41.4589205Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T22:29:41.4595994Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T22:29:41.4596143Z       "requiredStages": [
2026-06-21T22:29:41.4596223Z         "doc",
2026-06-21T22:29:41.4596295Z         "impl",
2026-06-21T22:29:41.4596380Z         "unit",
2026-06-21T22:29:41.4596458Z         "int"
2026-06-21T22:29:41.4596548Z       ],
2026-06-21T22:29:41.4596633Z       "stages": {
2026-06-21T22:29:41.4596733Z         "doc": {
2026-06-21T22:29:41.4596853Z           "complete": true,
2026-06-21T22:29:41.4596939Z           "evidence": [
2026-06-21T22:29:41.4597025Z             {
2026-06-21T22:29:41.4597168Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T22:29:41.4597263Z               "line": 130
2026-06-21T22:29:41.4597344Z             },
2026-06-21T22:29:41.4597431Z             {
2026-06-21T22:29:41.4597539Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4597750Z               "line": 96
2026-06-21T22:29:41.4597835Z             }
2026-06-21T22:29:41.4597915Z           ]
2026-06-21T22:29:41.4598000Z         },
2026-06-21T22:29:41.4598087Z         "impl": {
2026-06-21T22:29:41.4598183Z           "complete": true,
2026-06-21T22:29:41.4598272Z           "evidence": [
2026-06-21T22:29:41.4598349Z             {
2026-06-21T22:29:41.4598483Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.4598563Z               "line": 77
2026-06-21T22:29:41.4598644Z             },
2026-06-21T22:29:41.4598731Z             {
2026-06-21T22:29:41.4598854Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.4599164Z               "line": 183
2026-06-21T22:29:41.4599245Z             },
2026-06-21T22:29:41.4599332Z             {
2026-06-21T22:29:41.4599445Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4599536Z               "line": 222
2026-06-21T22:29:41.4599623Z             },
2026-06-21T22:29:41.4599709Z             {
2026-06-21T22:29:41.4599827Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4599908Z               "line": 71
2026-06-21T22:29:41.4599991Z             },
2026-06-21T22:29:41.4600066Z             {
2026-06-21T22:29:41.4600188Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4600283Z               "line": 176
2026-06-21T22:29:41.4600360Z             }
2026-06-21T22:29:41.4600444Z           ]
2026-06-21T22:29:41.4600515Z         },
2026-06-21T22:29:41.4600606Z         "int": {
2026-06-21T22:29:41.4600692Z           "complete": true,
2026-06-21T22:29:41.4600782Z           "evidence": [
2026-06-21T22:29:41.4600867Z             {
2026-06-21T22:29:41.4600993Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T22:29:41.4601082Z               "line": 25
2026-06-21T22:29:41.4601168Z             }
2026-06-21T22:29:41.4601245Z           ]
2026-06-21T22:29:41.4601340Z         },
2026-06-21T22:29:41.4601425Z         "unit": {
2026-06-21T22:29:41.4601511Z           "complete": true,
2026-06-21T22:29:41.4601598Z           "evidence": [
2026-06-21T22:29:41.4601684Z             {
2026-06-21T22:29:41.4601807Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.4601894Z               "line": 341
2026-06-21T22:29:41.4601974Z             },
2026-06-21T22:29:41.4602060Z             {
2026-06-21T22:29:41.4602184Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T22:29:41.4602271Z               "line": 391
2026-06-21T22:29:41.4602365Z             },
2026-06-21T22:29:41.4602446Z             {
2026-06-21T22:29:41.4602580Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4602665Z               "line": 1244
2026-06-21T22:29:41.4602747Z             },
2026-06-21T22:29:41.4602833Z             {
2026-06-21T22:29:41.4602943Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4603037Z               "line": 184
2026-06-21T22:29:41.4603122Z             },
2026-06-21T22:29:41.4603203Z             {
2026-06-21T22:29:41.4603320Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4603410Z               "line": 208
2026-06-21T22:29:41.4603482Z             },
2026-06-21T22:29:41.4603564Z             {
2026-06-21T22:29:41.4603683Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4603773Z               "line": 236
2026-06-21T22:29:41.4603855Z             },
2026-06-21T22:29:41.4603936Z             {
2026-06-21T22:29:41.4604049Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T22:29:41.4604151Z               "line": 945
2026-06-21T22:29:41.4604236Z             }
2026-06-21T22:29:41.4604317Z           ]
2026-06-21T22:29:41.4604403Z         }
2026-06-21T22:29:41.4604489Z       }
2026-06-21T22:29:41.4604570Z     },
2026-06-21T22:29:41.4604655Z     {
2026-06-21T22:29:41.4604746Z       "id": "REQ-SHELL-1",
2026-06-21T22:29:41.4605693Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T22:29:41.4605789Z       "requiredStages": [
2026-06-21T22:29:41.4605869Z         "impl",
2026-06-21T22:29:41.4605958Z         "unit",
2026-06-21T22:29:41.4606054Z         "int"
2026-06-21T22:29:41.4606140Z       ],
2026-06-21T22:29:41.4606235Z       "stages": {
2026-06-21T22:29:41.4606316Z         "doc": {
2026-06-21T22:29:41.4606513Z           "complete": false,
2026-06-21T22:29:41.4606597Z           "evidence": []
2026-06-21T22:29:41.4606679Z         },
2026-06-21T22:29:41.4606760Z         "impl": {
2026-06-21T22:29:41.4606846Z           "complete": true,
2026-06-21T22:29:41.4606940Z           "evidence": [
2026-06-21T22:29:41.4607022Z             {
2026-06-21T22:29:41.4607160Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4607246Z               "line": 189
2026-06-21T22:29:41.4607328Z             },
2026-06-21T22:29:41.4607413Z             {
2026-06-21T22:29:41.4607523Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4607608Z               "line": 268
2026-06-21T22:29:41.4607690Z             },
2026-06-21T22:29:41.4607775Z             {
2026-06-21T22:29:41.4607894Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4607981Z               "line": 27
2026-06-21T22:29:41.4608062Z             },
2026-06-21T22:29:41.4608147Z             {
2026-06-21T22:29:41.4608263Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4608344Z               "line": 52
2026-06-21T22:29:41.4608423Z             },
2026-06-21T22:29:41.4608504Z             {
2026-06-21T22:29:41.4608623Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4608715Z               "line": 144
2026-06-21T22:29:41.4608799Z             },
2026-06-21T22:29:41.4608875Z             {
2026-06-21T22:29:41.4609076Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4609161Z               "line": 176
2026-06-21T22:29:41.4609243Z             },
2026-06-21T22:29:41.4609329Z             {
2026-06-21T22:29:41.4609442Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4609519Z               "line": 22
2026-06-21T22:29:41.4609606Z             },
2026-06-21T22:29:41.4609691Z             {
2026-06-21T22:29:41.4609810Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4609902Z               "line": 65
2026-06-21T22:29:41.4609982Z             },
2026-06-21T22:29:41.4610072Z             {
2026-06-21T22:29:41.4610183Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4610260Z               "line": 76
2026-06-21T22:29:41.4610344Z             },
2026-06-21T22:29:41.4610435Z             {
2026-06-21T22:29:41.4610556Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4610640Z               "line": 151
2026-06-21T22:29:41.4610730Z             },
2026-06-21T22:29:41.4610810Z             {
2026-06-21T22:29:41.4610934Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4611018Z               "line": 210
2026-06-21T22:29:41.4611103Z             },
2026-06-21T22:29:41.4611185Z             {
2026-06-21T22:29:41.4611295Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4611380Z               "line": 259
2026-06-21T22:29:41.4611462Z             },
2026-06-21T22:29:41.4611562Z             {
2026-06-21T22:29:41.4611662Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4611751Z               "line": 281
2026-06-21T22:29:41.4611839Z             },
2026-06-21T22:29:41.4611910Z             {
2026-06-21T22:29:41.4612029Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4612210Z               "line": 294
2026-06-21T22:29:41.4612291Z             },
2026-06-21T22:29:41.4612367Z             {
2026-06-21T22:29:41.4612488Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4615173Z               "line": 217
2026-06-21T22:29:41.4615277Z             },
2026-06-21T22:29:41.4615364Z             {
2026-06-21T22:29:41.4615491Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4615592Z               "line": 233
2026-06-21T22:29:41.4615674Z             },
2026-06-21T22:29:41.4615764Z             {
2026-06-21T22:29:41.4615887Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.4616131Z               "line": 41
2026-06-21T22:29:41.4616215Z             },
2026-06-21T22:29:41.4616297Z             {
2026-06-21T22:29:41.4616410Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.4616499Z               "line": 222
2026-06-21T22:29:41.4616590Z             },
2026-06-21T22:29:41.4616691Z             {
2026-06-21T22:29:41.4616805Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T22:29:41.4616904Z               "line": 173
2026-06-21T22:29:41.4616972Z             },
2026-06-21T22:29:41.4617063Z             {
2026-06-21T22:29:41.4617166Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4617249Z               "line": 354
2026-06-21T22:29:41.4617335Z             },
2026-06-21T22:29:41.4617416Z             {
2026-06-21T22:29:41.4617520Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4617606Z               "line": 419
2026-06-21T22:29:41.4617687Z             },
2026-06-21T22:29:41.4617787Z             {
2026-06-21T22:29:41.4617907Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4617993Z               "line": 333
2026-06-21T22:29:41.4618074Z             },
2026-06-21T22:29:41.4618154Z             {
2026-06-21T22:29:41.4618260Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4618368Z               "line": 6320
2026-06-21T22:29:41.4618450Z             },
2026-06-21T22:29:41.4618532Z             {
2026-06-21T22:29:41.4618631Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4618712Z               "line": 6470
2026-06-21T22:29:41.4618799Z             },
2026-06-21T22:29:41.4618880Z             {
2026-06-21T22:29:41.4619073Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4619164Z               "line": 6646
2026-06-21T22:29:41.4619241Z             }
2026-06-21T22:29:41.4619331Z           ]
2026-06-21T22:29:41.4619412Z         },
2026-06-21T22:29:41.4619493Z         "int": {
2026-06-21T22:29:41.4619623Z           "complete": true,
2026-06-21T22:29:41.4619712Z           "evidence": [
2026-06-21T22:29:41.4619799Z             {
2026-06-21T22:29:41.4619932Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4620017Z               "line": 713
2026-06-21T22:29:41.4620099Z             },
2026-06-21T22:29:41.4620181Z             {
2026-06-21T22:29:41.4620309Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T22:29:41.4620389Z               "line": 8
2026-06-21T22:29:41.4620471Z             },
2026-06-21T22:29:41.4620552Z             {
2026-06-21T22:29:41.4620675Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T22:29:41.4620753Z               "line": 49
2026-06-21T22:29:41.4620839Z             },
2026-06-21T22:29:41.4620918Z             {
2026-06-21T22:29:41.4621038Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4621125Z               "line": 778
2026-06-21T22:29:41.4621209Z             },
2026-06-21T22:29:41.4621295Z             {
2026-06-21T22:29:41.4621409Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4621504Z               "line": 1213
2026-06-21T22:29:41.4621583Z             },
2026-06-21T22:29:41.4621663Z             {
2026-06-21T22:29:41.4621788Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T22:29:41.4621974Z               "line": 17
2026-06-21T22:29:41.4622065Z             },
2026-06-21T22:29:41.4622146Z             {
2026-06-21T22:29:41.4622269Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T22:29:41.4622356Z               "line": 14
2026-06-21T22:29:41.4622446Z             }
2026-06-21T22:29:41.4622527Z           ]
2026-06-21T22:29:41.4622603Z         },
2026-06-21T22:29:41.4622690Z         "unit": {
2026-06-21T22:29:41.4622775Z           "complete": true,
2026-06-21T22:29:41.4622870Z           "evidence": [
2026-06-21T22:29:41.4622946Z             {
2026-06-21T22:29:41.4623113Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4623310Z               "line": 246
2026-06-21T22:29:41.4623391Z             },
2026-06-21T22:29:41.4623475Z             {
2026-06-21T22:29:41.4623586Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4623673Z               "line": 279
2026-06-21T22:29:41.4623757Z             },
2026-06-21T22:29:41.4623843Z             {
2026-06-21T22:29:41.4623958Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4624044Z               "line": 319
2026-06-21T22:29:41.4624129Z             },
2026-06-21T22:29:41.4624204Z             {
2026-06-21T22:29:41.4624324Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4624412Z               "line": 599
2026-06-21T22:29:41.4624498Z             },
2026-06-21T22:29:41.4624588Z             {
2026-06-21T22:29:41.4624699Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4624784Z               "line": 672
2026-06-21T22:29:41.4624869Z             },
2026-06-21T22:29:41.4624947Z             {
2026-06-21T22:29:41.4625061Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4625146Z               "line": 816
2026-06-21T22:29:41.4625227Z             },
2026-06-21T22:29:41.4625314Z             {
2026-06-21T22:29:41.4625423Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4625508Z               "line": 595
2026-06-21T22:29:41.4625586Z             },
2026-06-21T22:29:41.4625666Z             {
2026-06-21T22:29:41.4625780Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T22:29:41.4625867Z               "line": 399
2026-06-21T22:29:41.4625952Z             },
2026-06-21T22:29:41.4626033Z             {
2026-06-21T22:29:41.4626133Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4626220Z               "line": 8976
2026-06-21T22:29:41.4626305Z             },
2026-06-21T22:29:41.4626385Z             {
2026-06-21T22:29:41.4626497Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4626587Z               "line": 9300
2026-06-21T22:29:41.4626667Z             },
2026-06-21T22:29:41.4626752Z             {
2026-06-21T22:29:41.4626852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4626951Z               "line": 9717
2026-06-21T22:29:41.4627031Z             }
2026-06-21T22:29:41.4627126Z           ]
2026-06-21T22:29:41.4627203Z         }
2026-06-21T22:29:41.4627290Z       }
2026-06-21T22:29:41.4627370Z     },
2026-06-21T22:29:41.4627451Z     {
2026-06-21T22:29:41.4627547Z       "id": "REQ-SHELL-2",
2026-06-21T22:29:41.4629102Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T22:29:41.4629219Z       "requiredStages": [
2026-06-21T22:29:41.4629301Z         "impl",
2026-06-21T22:29:41.4629378Z         "unit",
2026-06-21T22:29:41.4629459Z         "int"
2026-06-21T22:29:41.4629539Z       ],
2026-06-21T22:29:41.4629629Z       "stages": {
2026-06-21T22:29:41.4629859Z         "doc": {
2026-06-21T22:29:41.4629948Z           "complete": false,
2026-06-21T22:29:41.4630029Z           "evidence": []
2026-06-21T22:29:41.4630116Z         },
2026-06-21T22:29:41.4630202Z         "impl": {
2026-06-21T22:29:41.4630296Z           "complete": true,
2026-06-21T22:29:41.4630378Z           "evidence": [
2026-06-21T22:29:41.4630459Z             {
2026-06-21T22:29:41.4630586Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.4630668Z               "line": 217
2026-06-21T22:29:41.4630755Z             },
2026-06-21T22:29:41.4630845Z             {
2026-06-21T22:29:41.4630969Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4631169Z               "line": 403
2026-06-21T22:29:41.4631245Z             },
2026-06-21T22:29:41.4631328Z             {
2026-06-21T22:29:41.4631450Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T22:29:41.4631541Z               "line": 250
2026-06-21T22:29:41.4631642Z             },
2026-06-21T22:29:41.4631723Z             {
2026-06-21T22:29:41.4631835Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.4631920Z               "line": 403
2026-06-21T22:29:41.4632007Z             },
2026-06-21T22:29:41.4632092Z             {
2026-06-21T22:29:41.4632205Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4632296Z               "line": 30
2026-06-21T22:29:41.4632377Z             },
2026-06-21T22:29:41.4632462Z             {
2026-06-21T22:29:41.4632582Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4632673Z               "line": 409
2026-06-21T22:29:41.4632773Z             },
2026-06-21T22:29:41.4632853Z             {
2026-06-21T22:29:41.4632969Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4633049Z               "line": 445
2026-06-21T22:29:41.4633134Z             },
2026-06-21T22:29:41.4633221Z             {
2026-06-21T22:29:41.4633335Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4633435Z               "line": 660
2026-06-21T22:29:41.4633516Z             },
2026-06-21T22:29:41.4633608Z             {
2026-06-21T22:29:41.4633717Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.4633797Z               "line": 348
2026-06-21T22:29:41.4633884Z             },
2026-06-21T22:29:41.4633961Z             {
2026-06-21T22:29:41.4634074Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4634155Z               "line": 115
2026-06-21T22:29:41.4634243Z             },
2026-06-21T22:29:41.4634322Z             {
2026-06-21T22:29:41.4634446Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4634528Z               "line": 120
2026-06-21T22:29:41.4634605Z             },
2026-06-21T22:29:41.4634689Z             {
2026-06-21T22:29:41.4634792Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4634884Z               "line": 374
2026-06-21T22:29:41.4634968Z             },
2026-06-21T22:29:41.4635053Z             {
2026-06-21T22:29:41.4635163Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4635254Z               "line": 500
2026-06-21T22:29:41.4635339Z             },
2026-06-21T22:29:41.4635424Z             {
2026-06-21T22:29:41.4635540Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4635626Z               "line": 24
2026-06-21T22:29:41.4635706Z             },
2026-06-21T22:29:41.4635793Z             {
2026-06-21T22:29:41.4635907Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4636001Z               "line": 76
2026-06-21T22:29:41.4636083Z             },
2026-06-21T22:29:41.4636170Z             {
2026-06-21T22:29:41.4636279Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4636369Z               "line": 154
2026-06-21T22:29:41.4636446Z             },
2026-06-21T22:29:41.4636517Z             {
2026-06-21T22:29:41.4636722Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4636809Z               "line": 177
2026-06-21T22:29:41.4636893Z             },
2026-06-21T22:29:41.4636980Z             {
2026-06-21T22:29:41.4637095Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4637180Z               "line": 273
2026-06-21T22:29:41.4637265Z             },
2026-06-21T22:29:41.4637340Z             {
2026-06-21T22:29:41.4637451Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4637535Z               "line": 456
2026-06-21T22:29:41.4637620Z             },
2026-06-21T22:29:41.4637701Z             {
2026-06-21T22:29:41.4637887Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4637972Z               "line": 538
2026-06-21T22:29:41.4638054Z             },
2026-06-21T22:29:41.4638136Z             {
2026-06-21T22:29:41.4638263Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T22:29:41.4638349Z               "line": 27
2026-06-21T22:29:41.4638435Z             },
2026-06-21T22:29:41.4638521Z             {
2026-06-21T22:29:41.4638630Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T22:29:41.4638713Z               "line": 48
2026-06-21T22:29:41.4638788Z             },
2026-06-21T22:29:41.4638874Z             {
2026-06-21T22:29:41.4639079Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4639165Z               "line": 517
2026-06-21T22:29:41.4639250Z             },
2026-06-21T22:29:41.4639333Z             {
2026-06-21T22:29:41.4639432Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4639518Z               "line": 1921
2026-06-21T22:29:41.4639604Z             },
2026-06-21T22:29:41.4639686Z             {
2026-06-21T22:29:41.4639789Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4639885Z               "line": 6334
2026-06-21T22:29:41.4639962Z             },
2026-06-21T22:29:41.4640043Z             {
2026-06-21T22:29:41.4640151Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4640246Z               "line": 6395
2026-06-21T22:29:41.4640322Z             },
2026-06-21T22:29:41.4640409Z             {
2026-06-21T22:29:41.4640512Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4640594Z               "line": 6423
2026-06-21T22:29:41.4640671Z             },
2026-06-21T22:29:41.4640757Z             {
2026-06-21T22:29:41.4640856Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4640938Z               "line": 6477
2026-06-21T22:29:41.4641019Z             },
2026-06-21T22:29:41.4641105Z             {
2026-06-21T22:29:41.4641214Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4641296Z               "line": 6732
2026-06-21T22:29:41.4641367Z             },
2026-06-21T22:29:41.4641452Z             {
2026-06-21T22:29:41.4641553Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4641634Z               "line": 6792
2026-06-21T22:29:41.4641719Z             },
2026-06-21T22:29:41.4641805Z             {
2026-06-21T22:29:41.4641916Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4641997Z               "line": 298
2026-06-21T22:29:41.4642082Z             },
2026-06-21T22:29:41.4642168Z             {
2026-06-21T22:29:41.4642269Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4642358Z               "line": 339
2026-06-21T22:29:41.4642434Z             }
2026-06-21T22:29:41.4642510Z           ]
2026-06-21T22:29:41.4642601Z         },
2026-06-21T22:29:41.4642685Z         "int": {
2026-06-21T22:29:41.4642774Z           "complete": true,
2026-06-21T22:29:41.4642870Z           "evidence": [
2026-06-21T22:29:41.4642952Z             {
2026-06-21T22:29:41.4643070Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4643171Z               "line": 706
2026-06-21T22:29:41.4643257Z             },
2026-06-21T22:29:41.4643338Z             {
2026-06-21T22:29:41.4643461Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4643648Z               "line": 778
2026-06-21T22:29:41.4643733Z             },
2026-06-21T22:29:41.4643815Z             {
2026-06-21T22:29:41.4643938Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4644023Z               "line": 1213
2026-06-21T22:29:41.4644100Z             },
2026-06-21T22:29:41.4644187Z             {
2026-06-21T22:29:41.4644320Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T22:29:41.4644405Z               "line": 18
2026-06-21T22:29:41.4644483Z             }
2026-06-21T22:29:41.4644572Z           ]
2026-06-21T22:29:41.4644745Z         },
2026-06-21T22:29:41.4644831Z         "unit": {
2026-06-21T22:29:41.4644924Z           "complete": true,
2026-06-21T22:29:41.4645006Z           "evidence": [
2026-06-21T22:29:41.4645089Z             {
2026-06-21T22:29:41.4645202Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4645291Z               "line": 744
2026-06-21T22:29:41.4645372Z             },
2026-06-21T22:29:41.4645454Z             {
2026-06-21T22:29:41.4645575Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T22:29:41.4645656Z               "line": 796
2026-06-21T22:29:41.4645742Z             },
2026-06-21T22:29:41.4645828Z             {
2026-06-21T22:29:41.4645947Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4646033Z               "line": 705
2026-06-21T22:29:41.4646119Z             },
2026-06-21T22:29:41.4646200Z             {
2026-06-21T22:29:41.4646309Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4646401Z               "line": 754
2026-06-21T22:29:41.4646486Z             },
2026-06-21T22:29:41.4646576Z             {
2026-06-21T22:29:41.4646687Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4646781Z               "line": 778
2026-06-21T22:29:41.4646863Z             },
2026-06-21T22:29:41.4646944Z             {
2026-06-21T22:29:41.4647064Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4647144Z               "line": 603
2026-06-21T22:29:41.4647229Z             },
2026-06-21T22:29:41.4647316Z             {
2026-06-21T22:29:41.4647430Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4647516Z               "line": 624
2026-06-21T22:29:41.4647602Z             },
2026-06-21T22:29:41.4647684Z             {
2026-06-21T22:29:41.4647801Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4647882Z               "line": 660
2026-06-21T22:29:41.4647963Z             },
2026-06-21T22:29:41.4648048Z             {
2026-06-21T22:29:41.4648171Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4648261Z               "line": 714
2026-06-21T22:29:41.4648338Z             },
2026-06-21T22:29:41.4648419Z             {
2026-06-21T22:29:41.4648528Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4648629Z               "line": 732
2026-06-21T22:29:41.4648710Z             },
2026-06-21T22:29:41.4648790Z             {
2026-06-21T22:29:41.4648900Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4649063Z               "line": 766
2026-06-21T22:29:41.4649148Z             },
2026-06-21T22:29:41.4649234Z             {
2026-06-21T22:29:41.4649353Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T22:29:41.4649439Z               "line": 841
2026-06-21T22:29:41.4649524Z             },
2026-06-21T22:29:41.4649602Z             {
2026-06-21T22:29:41.4649725Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T22:29:41.4649825Z               "line": 85
2026-06-21T22:29:41.4649912Z             },
2026-06-21T22:29:41.4649992Z             {
2026-06-21T22:29:41.4650097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4650198Z               "line": 8044
2026-06-21T22:29:41.4650279Z             },
2026-06-21T22:29:41.4650474Z             {
2026-06-21T22:29:41.4650580Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4650673Z               "line": 9054
2026-06-21T22:29:41.4650753Z             },
2026-06-21T22:29:41.4650834Z             {
2026-06-21T22:29:41.4650941Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4651026Z               "line": 9124
2026-06-21T22:29:41.4651106Z             },
2026-06-21T22:29:41.4651188Z             {
2026-06-21T22:29:41.4651284Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4651369Z               "line": 9162
2026-06-21T22:29:41.4651450Z             }
2026-06-21T22:29:41.4651527Z           ]
2026-06-21T22:29:41.4651726Z         }
2026-06-21T22:29:41.4651813Z       }
2026-06-21T22:29:41.4651894Z     },
2026-06-21T22:29:41.4651980Z     {
2026-06-21T22:29:41.4652079Z       "id": "REQ-SHELL-3",
2026-06-21T22:29:41.4653874Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T22:29:41.4653983Z       "requiredStages": [
2026-06-21T22:29:41.4654075Z         "impl",
2026-06-21T22:29:41.4654151Z         "unit",
2026-06-21T22:29:41.4654250Z         "int"
2026-06-21T22:29:41.4654331Z       ],
2026-06-21T22:29:41.4654418Z       "stages": {
2026-06-21T22:29:41.4654503Z         "doc": {
2026-06-21T22:29:41.4654598Z           "complete": false,
2026-06-21T22:29:41.4654695Z           "evidence": []
2026-06-21T22:29:41.4654775Z         },
2026-06-21T22:29:41.4654856Z         "impl": {
2026-06-21T22:29:41.4654956Z           "complete": true,
2026-06-21T22:29:41.4655038Z           "evidence": [
2026-06-21T22:29:41.4655118Z             {
2026-06-21T22:29:41.4655246Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.4655329Z               "line": 229
2026-06-21T22:29:41.4655415Z             },
2026-06-21T22:29:41.4655499Z             {
2026-06-21T22:29:41.4655610Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4655706Z               "line": 36
2026-06-21T22:29:41.4655786Z             },
2026-06-21T22:29:41.4655875Z             {
2026-06-21T22:29:41.4655994Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4656089Z               "line": 137
2026-06-21T22:29:41.4656182Z             },
2026-06-21T22:29:41.4656264Z             {
2026-06-21T22:29:41.4656379Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4656460Z               "line": 153
2026-06-21T22:29:41.4656531Z             },
2026-06-21T22:29:41.4656622Z             {
2026-06-21T22:29:41.4656742Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4656840Z               "line": 165
2026-06-21T22:29:41.4656918Z             },
2026-06-21T22:29:41.4657004Z             {
2026-06-21T22:29:41.4657117Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4657208Z               "line": 242
2026-06-21T22:29:41.4657295Z             },
2026-06-21T22:29:41.4657370Z             {
2026-06-21T22:29:41.4657494Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4657581Z               "line": 267
2026-06-21T22:29:41.4657666Z             },
2026-06-21T22:29:41.4657747Z             {
2026-06-21T22:29:41.4657857Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4657939Z               "line": 293
2026-06-21T22:29:41.4658018Z             },
2026-06-21T22:29:41.4658100Z             {
2026-06-21T22:29:41.4658210Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T22:29:41.4658385Z               "line": 51
2026-06-21T22:29:41.4658475Z             },
2026-06-21T22:29:41.4658556Z             {
2026-06-21T22:29:41.4658683Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4658764Z               "line": 333
2026-06-21T22:29:41.4658850Z             },
2026-06-21T22:29:41.4658927Z             {
2026-06-21T22:29:41.4659136Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4659218Z               "line": 373
2026-06-21T22:29:41.4659299Z             },
2026-06-21T22:29:41.4659388Z             {
2026-06-21T22:29:41.4659509Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4659698Z               "line": 602
2026-06-21T22:29:41.4659780Z             },
2026-06-21T22:29:41.4659862Z             {
2026-06-21T22:29:41.4659985Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4660070Z               "line": 132
2026-06-21T22:29:41.4660158Z             },
2026-06-21T22:29:41.4660233Z             {
2026-06-21T22:29:41.4660342Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4660424Z               "line": 448
2026-06-21T22:29:41.4660505Z             },
2026-06-21T22:29:41.4660590Z             {
2026-06-21T22:29:41.4660700Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T22:29:41.4660777Z               "line": 74
2026-06-21T22:29:41.4660857Z             },
2026-06-21T22:29:41.4660943Z             {
2026-06-21T22:29:41.4661059Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4661140Z               "line": 605
2026-06-21T22:29:41.4661233Z             },
2026-06-21T22:29:41.4661309Z             {
2026-06-21T22:29:41.4661424Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4661511Z               "line": 396
2026-06-21T22:29:41.4661591Z             },
2026-06-21T22:29:41.4661666Z             {
2026-06-21T22:29:41.4661772Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4661863Z               "line": 6518
2026-06-21T22:29:41.4661938Z             }
2026-06-21T22:29:41.4662025Z           ]
2026-06-21T22:29:41.4662096Z         },
2026-06-21T22:29:41.4662182Z         "int": {
2026-06-21T22:29:41.4662267Z           "complete": true,
2026-06-21T22:29:41.4662358Z           "evidence": [
2026-06-21T22:29:41.4662444Z             {
2026-06-21T22:29:41.4662558Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4662654Z               "line": 1262
2026-06-21T22:29:41.4662736Z             },
2026-06-21T22:29:41.4662821Z             {
2026-06-21T22:29:41.4662926Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T22:29:41.4663022Z               "line": 17
2026-06-21T22:29:41.4663098Z             }
2026-06-21T22:29:41.4663183Z           ]
2026-06-21T22:29:41.4663264Z         },
2026-06-21T22:29:41.4663347Z         "unit": {
2026-06-21T22:29:41.4663440Z           "complete": true,
2026-06-21T22:29:41.4663535Z           "evidence": [
2026-06-21T22:29:41.4663616Z             {
2026-06-21T22:29:41.4663739Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4663819Z               "line": 311
2026-06-21T22:29:41.4663904Z             },
2026-06-21T22:29:41.4663991Z             {
2026-06-21T22:29:41.4664101Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4664185Z               "line": 325
2026-06-21T22:29:41.4664266Z             },
2026-06-21T22:29:41.4664358Z             {
2026-06-21T22:29:41.4664467Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4664567Z               "line": 343
2026-06-21T22:29:41.4664659Z             },
2026-06-21T22:29:41.4664739Z             {
2026-06-21T22:29:41.4664853Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4664940Z               "line": 364
2026-06-21T22:29:41.4665026Z             },
2026-06-21T22:29:41.4665111Z             {
2026-06-21T22:29:41.4665335Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T22:29:41.4665421Z               "line": 376
2026-06-21T22:29:41.4665511Z             },
2026-06-21T22:29:41.4665593Z             {
2026-06-21T22:29:41.4665698Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4665793Z               "line": 897
2026-06-21T22:29:41.4665880Z             },
2026-06-21T22:29:41.4665965Z             {
2026-06-21T22:29:41.4666074Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4666156Z               "line": 957
2026-06-21T22:29:41.4666247Z             },
2026-06-21T22:29:41.4666332Z             {
2026-06-21T22:29:41.4666531Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T22:29:41.4666621Z               "line": 338
2026-06-21T22:29:41.4666705Z             },
2026-06-21T22:29:41.4666781Z             {
2026-06-21T22:29:41.4666896Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4666978Z               "line": 769
2026-06-21T22:29:41.4667067Z             },
2026-06-21T22:29:41.4667153Z             {
2026-06-21T22:29:41.4667254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4667339Z               "line": 8836
2026-06-21T22:29:41.4667420Z             }
2026-06-21T22:29:41.4667502Z           ]
2026-06-21T22:29:41.4667587Z         }
2026-06-21T22:29:41.4667673Z       }
2026-06-21T22:29:41.4667754Z     },
2026-06-21T22:29:41.4667831Z     {
2026-06-21T22:29:41.4667921Z       "id": "REQ-SHELL-4",
2026-06-21T22:29:41.4669764Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T22:29:41.4669878Z       "requiredStages": [
2026-06-21T22:29:41.4669958Z         "doc",
2026-06-21T22:29:41.4670040Z         "impl",
2026-06-21T22:29:41.4670135Z         "unit",
2026-06-21T22:29:41.4670216Z         "int"
2026-06-21T22:29:41.4670296Z       ],
2026-06-21T22:29:41.4670383Z       "stages": {
2026-06-21T22:29:41.4670468Z         "doc": {
2026-06-21T22:29:41.4670568Z           "complete": true,
2026-06-21T22:29:41.4670649Z           "evidence": [
2026-06-21T22:29:41.4670737Z             {
2026-06-21T22:29:41.4670846Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4670921Z               "line": 281
2026-06-21T22:29:41.4671008Z             },
2026-06-21T22:29:41.4671080Z             {
2026-06-21T22:29:41.4671299Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T22:29:41.4671390Z               "line": 88
2026-06-21T22:29:41.4671479Z             }
2026-06-21T22:29:41.4671560Z           ]
2026-06-21T22:29:41.4671643Z         },
2026-06-21T22:29:41.4671737Z         "impl": {
2026-06-21T22:29:41.4671822Z           "complete": true,
2026-06-21T22:29:41.4671907Z           "evidence": [
2026-06-21T22:29:41.4671989Z             {
2026-06-21T22:29:41.4672113Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.4672203Z               "line": 243
2026-06-21T22:29:41.4672275Z             },
2026-06-21T22:29:41.4672361Z             {
2026-06-21T22:29:41.4672474Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T22:29:41.4672565Z               "line": 61
2026-06-21T22:29:41.4672648Z             },
2026-06-21T22:29:41.4672733Z             {
2026-06-21T22:29:41.4672861Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4672948Z               "line": 218
2026-06-21T22:29:41.4673033Z             },
2026-06-21T22:29:41.4673118Z             {
2026-06-21T22:29:41.4673362Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4673447Z               "line": 245
2026-06-21T22:29:41.4673534Z             },
2026-06-21T22:29:41.4673616Z             {
2026-06-21T22:29:41.4673729Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4673819Z               "line": 616
2026-06-21T22:29:41.4673897Z             },
2026-06-21T22:29:41.4673982Z             {
2026-06-21T22:29:41.4674086Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4674181Z               "line": 1191
2026-06-21T22:29:41.4674262Z             },
2026-06-21T22:29:41.4674341Z             {
2026-06-21T22:29:41.4674565Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4674652Z               "line": 1203
2026-06-21T22:29:41.4674736Z             },
2026-06-21T22:29:41.4674822Z             {
2026-06-21T22:29:41.4674928Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4675018Z               "line": 1244
2026-06-21T22:29:41.4675098Z             },
2026-06-21T22:29:41.4675186Z             {
2026-06-21T22:29:41.4675304Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4675394Z               "line": 456
2026-06-21T22:29:41.4675476Z             },
2026-06-21T22:29:41.4675548Z             {
2026-06-21T22:29:41.4675671Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4675757Z               "line": 44
2026-06-21T22:29:41.4675844Z             },
2026-06-21T22:29:41.4675924Z             {
2026-06-21T22:29:41.4676038Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4676125Z               "line": 208
2026-06-21T22:29:41.4676210Z             },
2026-06-21T22:29:41.4676295Z             {
2026-06-21T22:29:41.4676401Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4676497Z               "line": 227
2026-06-21T22:29:41.4676572Z             },
2026-06-21T22:29:41.4676663Z             {
2026-06-21T22:29:41.4676769Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4676864Z               "line": 253
2026-06-21T22:29:41.4676948Z             },
2026-06-21T22:29:41.4677029Z             {
2026-06-21T22:29:41.4677143Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4677232Z               "line": 272
2026-06-21T22:29:41.4677307Z             },
2026-06-21T22:29:41.4677389Z             {
2026-06-21T22:29:41.4677499Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4677580Z               "line": 392
2026-06-21T22:29:41.4677665Z             },
2026-06-21T22:29:41.4677747Z             {
2026-06-21T22:29:41.4677857Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4677946Z               "line": 421
2026-06-21T22:29:41.4678033Z             },
2026-06-21T22:29:41.4678115Z             {
2026-06-21T22:29:41.4678224Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4678314Z               "line": 439
2026-06-21T22:29:41.4678396Z             },
2026-06-21T22:29:41.4678481Z             {
2026-06-21T22:29:41.4678581Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4678677Z               "line": 458
2026-06-21T22:29:41.4678758Z             },
2026-06-21T22:29:41.4678847Z             {
2026-06-21T22:29:41.4679016Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4679111Z               "line": 486
2026-06-21T22:29:41.4679191Z             },
2026-06-21T22:29:41.4679273Z             {
2026-06-21T22:29:41.4679402Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4679482Z               "line": 624
2026-06-21T22:29:41.4679562Z             },
2026-06-21T22:29:41.4679648Z             {
2026-06-21T22:29:41.4679771Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4679855Z               "line": 829
2026-06-21T22:29:41.4679936Z             },
2026-06-21T22:29:41.4680123Z             {
2026-06-21T22:29:41.4680232Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4680348Z               "line": 435
2026-06-21T22:29:41.4680434Z             },
2026-06-21T22:29:41.4680513Z             {
2026-06-21T22:29:41.4680624Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4680714Z               "line": 6574
2026-06-21T22:29:41.4680795Z             }
2026-06-21T22:29:41.4680876Z           ]
2026-06-21T22:29:41.4680958Z         },
2026-06-21T22:29:41.4681038Z         "int": {
2026-06-21T22:29:41.4681124Z           "complete": true,
2026-06-21T22:29:41.4681219Z           "evidence": [
2026-06-21T22:29:41.4681420Z             {
2026-06-21T22:29:41.4681529Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T22:29:41.4681616Z               "line": 18
2026-06-21T22:29:41.4681700Z             }
2026-06-21T22:29:41.4681781Z           ]
2026-06-21T22:29:41.4684346Z         },
2026-06-21T22:29:41.4684472Z         "unit": {
2026-06-21T22:29:41.4684565Z           "complete": true,
2026-06-21T22:29:41.4684656Z           "evidence": [
2026-06-21T22:29:41.4684736Z             {
2026-06-21T22:29:41.4684864Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4684953Z               "line": 1479
2026-06-21T22:29:41.4685034Z             },
2026-06-21T22:29:41.4685116Z             {
2026-06-21T22:29:41.4685234Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4685334Z               "line": 1508
2026-06-21T22:29:41.4685406Z             },
2026-06-21T22:29:41.4685483Z             {
2026-06-21T22:29:41.4685601Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4685707Z               "line": 504
2026-06-21T22:29:41.4685798Z             },
2026-06-21T22:29:41.4685878Z             {
2026-06-21T22:29:41.4686002Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4686094Z               "line": 514
2026-06-21T22:29:41.4686184Z             },
2026-06-21T22:29:41.4686264Z             {
2026-06-21T22:29:41.4686385Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4686474Z               "line": 531
2026-06-21T22:29:41.4686560Z             },
2026-06-21T22:29:41.4686646Z             {
2026-06-21T22:29:41.4686761Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4686846Z               "line": 543
2026-06-21T22:29:41.4686927Z             },
2026-06-21T22:29:41.4687014Z             {
2026-06-21T22:29:41.4687123Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T22:29:41.4687204Z               "line": 555
2026-06-21T22:29:41.4687291Z             },
2026-06-21T22:29:41.4687381Z             {
2026-06-21T22:29:41.4687504Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4687593Z               "line": 1145
2026-06-21T22:29:41.4687675Z             },
2026-06-21T22:29:41.4687764Z             {
2026-06-21T22:29:41.4687872Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4687959Z               "line": 776
2026-06-21T22:29:41.4688031Z             }
2026-06-21T22:29:41.4688112Z           ]
2026-06-21T22:29:41.4688192Z         }
2026-06-21T22:29:41.4688273Z       }
2026-06-21T22:29:41.4688360Z     },
2026-06-21T22:29:41.4688441Z     {
2026-06-21T22:29:41.4688540Z       "id": "REQ-SHELL-5",
2026-06-21T22:29:41.4689838Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T22:29:41.4689957Z       "requiredStages": [
2026-06-21T22:29:41.4690037Z         "doc",
2026-06-21T22:29:41.4690122Z         "impl",
2026-06-21T22:29:41.4690208Z         "unit",
2026-06-21T22:29:41.4690463Z         "int"
2026-06-21T22:29:41.4690545Z       ],
2026-06-21T22:29:41.4690636Z       "stages": {
2026-06-21T22:29:41.4690712Z         "doc": {
2026-06-21T22:29:41.4690802Z           "complete": true,
2026-06-21T22:29:41.4690884Z           "evidence": [
2026-06-21T22:29:41.4690974Z             {
2026-06-21T22:29:41.4691068Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4691155Z               "line": 284
2026-06-21T22:29:41.4691246Z             }
2026-06-21T22:29:41.4691327Z           ]
2026-06-21T22:29:41.4691412Z         },
2026-06-21T22:29:41.4691490Z         "impl": {
2026-06-21T22:29:41.4691589Z           "complete": true,
2026-06-21T22:29:41.4691779Z           "evidence": [
2026-06-21T22:29:41.4691862Z             {
2026-06-21T22:29:41.4691990Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T22:29:41.4692080Z               "line": 260
2026-06-21T22:29:41.4692162Z             }
2026-06-21T22:29:41.4692247Z           ]
2026-06-21T22:29:41.4692333Z         },
2026-06-21T22:29:41.4692414Z         "int": {
2026-06-21T22:29:41.4692501Z           "complete": true,
2026-06-21T22:29:41.4692594Z           "evidence": [
2026-06-21T22:29:41.4692676Z             {
2026-06-21T22:29:41.4692801Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4692886Z               "line": 827
2026-06-21T22:29:41.4692970Z             },
2026-06-21T22:29:41.4693051Z             {
2026-06-21T22:29:41.4693171Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4693261Z               "line": 1290
2026-06-21T22:29:41.4693347Z             },
2026-06-21T22:29:41.4693428Z             {
2026-06-21T22:29:41.4693567Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T22:29:41.4693652Z               "line": 23
2026-06-21T22:29:41.4693725Z             }
2026-06-21T22:29:41.4693806Z           ]
2026-06-21T22:29:41.4693891Z         },
2026-06-21T22:29:41.4693967Z         "unit": {
2026-06-21T22:29:41.4694068Z           "complete": true,
2026-06-21T22:29:41.4694148Z           "evidence": [
2026-06-21T22:29:41.4694234Z             {
2026-06-21T22:29:41.4694354Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T22:29:41.4694445Z               "line": 803
2026-06-21T22:29:41.4694530Z             }
2026-06-21T22:29:41.4694615Z           ]
2026-06-21T22:29:41.4694698Z         }
2026-06-21T22:29:41.4694774Z       }
2026-06-21T22:29:41.4694858Z     },
2026-06-21T22:29:41.4694940Z     {
2026-06-21T22:29:41.4695032Z       "id": "REQ-START-1",
2026-06-21T22:29:41.4695230Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T22:29:41.4695325Z       "requiredStages": [
2026-06-21T22:29:41.4695406Z         "impl",
2026-06-21T22:29:41.4695485Z         "unit"
2026-06-21T22:29:41.4695570Z       ],
2026-06-21T22:29:41.4695656Z       "stages": {
2026-06-21T22:29:41.4695738Z         "doc": {
2026-06-21T22:29:41.4695823Z           "complete": false,
2026-06-21T22:29:41.4695908Z           "evidence": []
2026-06-21T22:29:41.4695990Z         },
2026-06-21T22:29:41.4696081Z         "impl": {
2026-06-21T22:29:41.4696176Z           "complete": true,
2026-06-21T22:29:41.4696262Z           "evidence": [
2026-06-21T22:29:41.4696348Z             {
2026-06-21T22:29:41.4696467Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T22:29:41.4696557Z               "line": 16
2026-06-21T22:29:41.4696640Z             }
2026-06-21T22:29:41.4696720Z           ]
2026-06-21T22:29:41.4696805Z         },
2026-06-21T22:29:41.4696891Z         "int": {
2026-06-21T22:29:41.4696988Z           "complete": false,
2026-06-21T22:29:41.4697073Z           "evidence": []
2026-06-21T22:29:41.4697158Z         },
2026-06-21T22:29:41.4697250Z         "unit": {
2026-06-21T22:29:41.4697326Z           "complete": true,
2026-06-21T22:29:41.4697411Z           "evidence": [
2026-06-21T22:29:41.4697492Z             {
2026-06-21T22:29:41.4697608Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T22:29:41.4697788Z               "line": 48
2026-06-21T22:29:41.4697861Z             },
2026-06-21T22:29:41.4697946Z             {
2026-06-21T22:29:41.4698059Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T22:29:41.4698153Z               "line": 63
2026-06-21T22:29:41.4698230Z             }
2026-06-21T22:29:41.4698315Z           ]
2026-06-21T22:29:41.4698400Z         }
2026-06-21T22:29:41.4698480Z       }
2026-06-21T22:29:41.4698557Z     },
2026-06-21T22:29:41.4698634Z     {
2026-06-21T22:29:41.4698724Z       "id": "REQ-START-2",
2026-06-21T22:29:41.4698863Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T22:29:41.4699134Z       "requiredStages": [
2026-06-21T22:29:41.4699225Z         "impl",
2026-06-21T22:29:41.4699301Z         "unit",
2026-06-21T22:29:41.4699382Z         "int"
2026-06-21T22:29:41.4699463Z       ],
2026-06-21T22:29:41.4699559Z       "stages": {
2026-06-21T22:29:41.4699639Z         "doc": {
2026-06-21T22:29:41.4699734Z           "complete": false,
2026-06-21T22:29:41.4699827Z           "evidence": []
2026-06-21T22:29:41.4699907Z         },
2026-06-21T22:29:41.4699997Z         "impl": {
2026-06-21T22:29:41.4700088Z           "complete": true,
2026-06-21T22:29:41.4700165Z           "evidence": [
2026-06-21T22:29:41.4700250Z             {
2026-06-21T22:29:41.4700388Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4700489Z               "line": 16
2026-06-21T22:29:41.4700574Z             },
2026-06-21T22:29:41.4700654Z             {
2026-06-21T22:29:41.4700759Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4700854Z               "line": 115
2026-06-21T22:29:41.4700938Z             },
2026-06-21T22:29:41.4701018Z             {
2026-06-21T22:29:41.4701133Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4701206Z               "line": 300
2026-06-21T22:29:41.4701291Z             }
2026-06-21T22:29:41.4701367Z           ]
2026-06-21T22:29:41.4701453Z         },
2026-06-21T22:29:41.4701539Z         "int": {
2026-06-21T22:29:41.4701633Z           "complete": true,
2026-06-21T22:29:41.4701730Z           "evidence": [
2026-06-21T22:29:41.4701811Z             {
2026-06-21T22:29:41.4701929Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.4702020Z               "line": 186
2026-06-21T22:29:41.4702097Z             }
2026-06-21T22:29:41.4702173Z           ]
2026-06-21T22:29:41.4702258Z         },
2026-06-21T22:29:41.4702344Z         "unit": {
2026-06-21T22:29:41.4702436Z           "complete": true,
2026-06-21T22:29:41.4702526Z           "evidence": [
2026-06-21T22:29:41.4702606Z             {
2026-06-21T22:29:41.4702727Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4702812Z               "line": 590
2026-06-21T22:29:41.4702893Z             },
2026-06-21T22:29:41.4702970Z             {
2026-06-21T22:29:41.4703080Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4703169Z               "line": 623
2026-06-21T22:29:41.4703250Z             }
2026-06-21T22:29:41.4703333Z           ]
2026-06-21T22:29:41.4703413Z         }
2026-06-21T22:29:41.4703502Z       }
2026-06-21T22:29:41.4703588Z     },
2026-06-21T22:29:41.4703669Z     {
2026-06-21T22:29:41.4703766Z       "id": "REQ-START-3",
2026-06-21T22:29:41.4703935Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T22:29:41.4704032Z       "requiredStages": [
2026-06-21T22:29:41.4704113Z         "impl",
2026-06-21T22:29:41.4704193Z         "unit",
2026-06-21T22:29:41.4704275Z         "int"
2026-06-21T22:29:41.4704347Z       ],
2026-06-21T22:29:41.4704433Z       "stages": {
2026-06-21T22:29:41.4704517Z         "doc": {
2026-06-21T22:29:41.4704618Z           "complete": false,
2026-06-21T22:29:41.4704704Z           "evidence": []
2026-06-21T22:29:41.4704781Z         },
2026-06-21T22:29:41.4704866Z         "impl": {
2026-06-21T22:29:41.4704957Z           "complete": true,
2026-06-21T22:29:41.4705056Z           "evidence": [
2026-06-21T22:29:41.4705239Z             {
2026-06-21T22:29:41.4705367Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4705457Z               "line": 23
2026-06-21T22:29:41.4705538Z             },
2026-06-21T22:29:41.4705621Z             {
2026-06-21T22:29:41.4705738Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4705827Z               "line": 205
2026-06-21T22:29:41.4705914Z             },
2026-06-21T22:29:41.4705999Z             {
2026-06-21T22:29:41.4706112Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4706207Z               "line": 221
2026-06-21T22:29:41.4706279Z             },
2026-06-21T22:29:41.4706455Z             {
2026-06-21T22:29:41.4706570Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4706646Z               "line": 17
2026-06-21T22:29:41.4706726Z             },
2026-06-21T22:29:41.4706807Z             {
2026-06-21T22:29:41.4706923Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4707018Z               "line": 35
2026-06-21T22:29:41.4707103Z             },
2026-06-21T22:29:41.4707185Z             {
2026-06-21T22:29:41.4707294Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4707375Z               "line": 116
2026-06-21T22:29:41.4707456Z             }
2026-06-21T22:29:41.4707543Z           ]
2026-06-21T22:29:41.4707628Z         },
2026-06-21T22:29:41.4707704Z         "int": {
2026-06-21T22:29:41.4707796Z           "complete": true,
2026-06-21T22:29:41.4707882Z           "evidence": [
2026-06-21T22:29:41.4707971Z             {
2026-06-21T22:29:41.4708086Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T22:29:41.4708187Z               "line": 488
2026-06-21T22:29:41.4708271Z             }
2026-06-21T22:29:41.4708353Z           ]
2026-06-21T22:29:41.4708440Z         },
2026-06-21T22:29:41.4708516Z         "unit": {
2026-06-21T22:29:41.4708600Z           "complete": true,
2026-06-21T22:29:41.4708681Z           "evidence": [
2026-06-21T22:29:41.4708766Z             {
2026-06-21T22:29:41.4708884Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4709045Z               "line": 381
2026-06-21T22:29:41.4709137Z             },
2026-06-21T22:29:41.4709213Z             {
2026-06-21T22:29:41.4709322Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4709403Z               "line": 402
2026-06-21T22:29:41.4709494Z             },
2026-06-21T22:29:41.4709579Z             {
2026-06-21T22:29:41.4709684Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T22:29:41.4709767Z               "line": 412
2026-06-21T22:29:41.4709852Z             },
2026-06-21T22:29:41.4709932Z             {
2026-06-21T22:29:41.4710038Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4710128Z               "line": 591
2026-06-21T22:29:41.4710204Z             },
2026-06-21T22:29:41.4710285Z             {
2026-06-21T22:29:41.4710406Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4710500Z               "line": 624
2026-06-21T22:29:41.4710581Z             },
2026-06-21T22:29:41.4710653Z             {
2026-06-21T22:29:41.4710768Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4710857Z               "line": 657
2026-06-21T22:29:41.4710943Z             }
2026-06-21T22:29:41.4711011Z           ]
2026-06-21T22:29:41.4711097Z         }
2026-06-21T22:29:41.4711181Z       }
2026-06-21T22:29:41.4711256Z     },
2026-06-21T22:29:41.4711338Z     {
2026-06-21T22:29:41.4711432Z       "id": "REQ-START-4",
2026-06-21T22:29:41.4711569Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T22:29:41.4711670Z       "requiredStages": [
2026-06-21T22:29:41.4711751Z         "impl",
2026-06-21T22:29:41.4711827Z         "unit"
2026-06-21T22:29:41.4711907Z       ],
2026-06-21T22:29:41.4711999Z       "stages": {
2026-06-21T22:29:41.4712090Z         "doc": {
2026-06-21T22:29:41.4712180Z           "complete": false,
2026-06-21T22:29:41.4712409Z           "evidence": []
2026-06-21T22:29:41.4712480Z         },
2026-06-21T22:29:41.4712571Z         "impl": {
2026-06-21T22:29:41.4712652Z           "complete": true,
2026-06-21T22:29:41.4712738Z           "evidence": [
2026-06-21T22:29:41.4712823Z             {
2026-06-21T22:29:41.4712939Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4713024Z               "line": 585
2026-06-21T22:29:41.4713095Z             }
2026-06-21T22:29:41.4713176Z           ]
2026-06-21T22:29:41.4713259Z         },
2026-06-21T22:29:41.4713348Z         "int": {
2026-06-21T22:29:41.4713439Z           "complete": false,
2026-06-21T22:29:41.4713621Z           "evidence": []
2026-06-21T22:29:41.4713700Z         },
2026-06-21T22:29:41.4713777Z         "unit": {
2026-06-21T22:29:41.4713869Z           "complete": true,
2026-06-21T22:29:41.4713959Z           "evidence": [
2026-06-21T22:29:41.4714039Z             {
2026-06-21T22:29:41.4714157Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4714248Z               "line": 1026
2026-06-21T22:29:41.4714330Z             }
2026-06-21T22:29:41.4714410Z           ]
2026-06-21T22:29:41.4714491Z         }
2026-06-21T22:29:41.4714573Z       }
2026-06-21T22:29:41.4714659Z     },
2026-06-21T22:29:41.4714739Z     {
2026-06-21T22:29:41.4714825Z       "id": "REQ-START-5",
2026-06-21T22:29:41.4717559Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T22:29:41.4717682Z       "requiredStages": [
2026-06-21T22:29:41.4717769Z         "doc",
2026-06-21T22:29:41.4717854Z         "impl",
2026-06-21T22:29:41.4717944Z         "unit",
2026-06-21T22:29:41.4718036Z         "int"
2026-06-21T22:29:41.4718113Z       ],
2026-06-21T22:29:41.4718193Z       "stages": {
2026-06-21T22:29:41.4718278Z         "doc": {
2026-06-21T22:29:41.4718375Z           "complete": true,
2026-06-21T22:29:41.4718470Z           "evidence": [
2026-06-21T22:29:41.4718551Z             {
2026-06-21T22:29:41.4718651Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4718738Z               "line": 176
2026-06-21T22:29:41.4718822Z             },
2026-06-21T22:29:41.4718913Z             {
2026-06-21T22:29:41.4719155Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T22:29:41.4719250Z               "line": 28
2026-06-21T22:29:41.4719331Z             }
2026-06-21T22:29:41.4719412Z           ]
2026-06-21T22:29:41.4719496Z         },
2026-06-21T22:29:41.4719581Z         "impl": {
2026-06-21T22:29:41.4719677Z           "complete": true,
2026-06-21T22:29:41.4719759Z           "evidence": [
2026-06-21T22:29:41.4719839Z             {
2026-06-21T22:29:41.4719964Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4720045Z               "line": 26
2026-06-21T22:29:41.4720126Z             },
2026-06-21T22:29:41.4720211Z             {
2026-06-21T22:29:41.4720322Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4720412Z               "line": 212
2026-06-21T22:29:41.4720506Z             },
2026-06-21T22:29:41.4720588Z             {
2026-06-21T22:29:41.4720698Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4720893Z               "line": 221
2026-06-21T22:29:41.4720966Z             },
2026-06-21T22:29:41.4721045Z             {
2026-06-21T22:29:41.4721155Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4721247Z               "line": 485
2026-06-21T22:29:41.4721328Z             },
2026-06-21T22:29:41.4721408Z             {
2026-06-21T22:29:41.4721513Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4721596Z               "line": 36
2026-06-21T22:29:41.4721680Z             },
2026-06-21T22:29:41.4721760Z             {
2026-06-21T22:29:41.4721879Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4722068Z               "line": 118
2026-06-21T22:29:41.4722148Z             },
2026-06-21T22:29:41.4722235Z             {
2026-06-21T22:29:41.4722345Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T22:29:41.4722430Z               "line": 329
2026-06-21T22:29:41.4722502Z             }
2026-06-21T22:29:41.4722593Z           ]
2026-06-21T22:29:41.4722674Z         },
2026-06-21T22:29:41.4722759Z         "int": {
2026-06-21T22:29:41.4722845Z           "complete": true,
2026-06-21T22:29:41.4722931Z           "evidence": [
2026-06-21T22:29:41.4723012Z             {
2026-06-21T22:29:41.4723136Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T22:29:41.4723227Z               "line": 17
2026-06-21T22:29:41.4723317Z             }
2026-06-21T22:29:41.4723398Z           ]
2026-06-21T22:29:41.4723484Z         },
2026-06-21T22:29:41.4723565Z         "unit": {
2026-06-21T22:29:41.4723651Z           "complete": true,
2026-06-21T22:29:41.4723736Z           "evidence": [
2026-06-21T22:29:41.4723824Z             {
2026-06-21T22:29:41.4723946Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4724027Z               "line": 358
2026-06-21T22:29:41.4724114Z             },
2026-06-21T22:29:41.4724195Z             {
2026-06-21T22:29:41.4724313Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T22:29:41.4724395Z               "line": 371
2026-06-21T22:29:41.4724482Z             },
2026-06-21T22:29:41.4724571Z             {
2026-06-21T22:29:41.4724674Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T22:29:41.4724765Z               "line": 597
2026-06-21T22:29:41.4724847Z             }
2026-06-21T22:29:41.4724937Z           ]
2026-06-21T22:29:41.4725013Z         }
2026-06-21T22:29:41.4725095Z       }
2026-06-21T22:29:41.4725186Z     },
2026-06-21T22:29:41.4725252Z     {
2026-06-21T22:29:41.4725342Z       "id": "REQ-STORE-1",
2026-06-21T22:29:41.4726153Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T22:29:41.4726263Z       "requiredStages": [
2026-06-21T22:29:41.4726354Z         "impl",
2026-06-21T22:29:41.4726440Z         "unit"
2026-06-21T22:29:41.4726524Z       ],
2026-06-21T22:29:41.4726610Z       "stages": {
2026-06-21T22:29:41.4726693Z         "doc": {
2026-06-21T22:29:41.4726783Z           "complete": false,
2026-06-21T22:29:41.4726876Z           "evidence": []
2026-06-21T22:29:41.4726962Z         },
2026-06-21T22:29:41.4727048Z         "impl": {
2026-06-21T22:29:41.4727142Z           "complete": true,
2026-06-21T22:29:41.4727227Z           "evidence": [
2026-06-21T22:29:41.4727313Z             {
2026-06-21T22:29:41.4727433Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4727527Z               "line": 23
2026-06-21T22:29:41.4727608Z             },
2026-06-21T22:29:41.4727690Z             {
2026-06-21T22:29:41.4727814Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4727894Z               "line": 46
2026-06-21T22:29:41.4727977Z             },
2026-06-21T22:29:41.4728053Z             {
2026-06-21T22:29:41.4728257Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4728344Z               "line": 97
2026-06-21T22:29:41.4728424Z             },
2026-06-21T22:29:41.4728505Z             {
2026-06-21T22:29:41.4728620Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4728710Z               "line": 125
2026-06-21T22:29:41.4728796Z             },
2026-06-21T22:29:41.4728877Z             {
2026-06-21T22:29:41.4729072Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4729163Z               "line": 207
2026-06-21T22:29:41.4729246Z             },
2026-06-21T22:29:41.4729440Z             {
2026-06-21T22:29:41.4729560Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4729646Z               "line": 231
2026-06-21T22:29:41.4729730Z             },
2026-06-21T22:29:41.4729810Z             {
2026-06-21T22:29:41.4729930Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4730033Z               "line": 467
2026-06-21T22:29:41.4730113Z             },
2026-06-21T22:29:41.4730200Z             {
2026-06-21T22:29:41.4730309Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4730394Z               "line": 25
2026-06-21T22:29:41.4730475Z             },
2026-06-21T22:29:41.4730553Z             {
2026-06-21T22:29:41.4730677Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4730752Z               "line": 120
2026-06-21T22:29:41.4730834Z             },
2026-06-21T22:29:41.4730925Z             {
2026-06-21T22:29:41.4731038Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4731139Z               "line": 148
2026-06-21T22:29:41.4731211Z             },
2026-06-21T22:29:41.4731296Z             {
2026-06-21T22:29:41.4731415Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4731492Z               "line": 165
2026-06-21T22:29:41.4731573Z             },
2026-06-21T22:29:41.4731658Z             {
2026-06-21T22:29:41.4731778Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4731865Z               "line": 180
2026-06-21T22:29:41.4731948Z             },
2026-06-21T22:29:41.4732030Z             {
2026-06-21T22:29:41.4732151Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4732235Z               "line": 198
2026-06-21T22:29:41.4732315Z             },
2026-06-21T22:29:41.4732400Z             {
2026-06-21T22:29:41.4732516Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4732599Z               "line": 207
2026-06-21T22:29:41.4732689Z             },
2026-06-21T22:29:41.4732766Z             {
2026-06-21T22:29:41.4732882Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T22:29:41.4732961Z               "line": 16
2026-06-21T22:29:41.4733052Z             },
2026-06-21T22:29:41.4733134Z             {
2026-06-21T22:29:41.4733248Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T22:29:41.4733333Z               "line": 63
2026-06-21T22:29:41.4733410Z             }
2026-06-21T22:29:41.4733500Z           ]
2026-06-21T22:29:41.4733581Z         },
2026-06-21T22:29:41.4733667Z         "int": {
2026-06-21T22:29:41.4733754Z           "complete": false,
2026-06-21T22:29:41.4733848Z           "evidence": []
2026-06-21T22:29:41.4733934Z         },
2026-06-21T22:29:41.4734015Z         "unit": {
2026-06-21T22:29:41.4734111Z           "complete": true,
2026-06-21T22:29:41.4734197Z           "evidence": [
2026-06-21T22:29:41.4734282Z             {
2026-06-21T22:29:41.4734403Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4734501Z               "line": 584
2026-06-21T22:29:41.4734587Z             },
2026-06-21T22:29:41.4734665Z             {
2026-06-21T22:29:41.4734783Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4734869Z               "line": 594
2026-06-21T22:29:41.4734965Z             },
2026-06-21T22:29:41.4735149Z             {
2026-06-21T22:29:41.4735277Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4735369Z               "line": 616
2026-06-21T22:29:41.4735450Z             },
2026-06-21T22:29:41.4735540Z             {
2026-06-21T22:29:41.4735640Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4735736Z               "line": 632
2026-06-21T22:29:41.4735817Z             },
2026-06-21T22:29:41.4735902Z             {
2026-06-21T22:29:41.4736022Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T22:29:41.4736113Z               "line": 690
2026-06-21T22:29:41.4736294Z             },
2026-06-21T22:29:41.4736370Z             {
2026-06-21T22:29:41.4736484Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4736565Z               "line": 472
2026-06-21T22:29:41.4736652Z             },
2026-06-21T22:29:41.4736732Z             {
2026-06-21T22:29:41.4736846Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T22:29:41.4736939Z               "line": 507
2026-06-21T22:29:41.4737024Z             },
2026-06-21T22:29:41.4737103Z             {
2026-06-21T22:29:41.4737204Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T22:29:41.4737286Z               "line": 120
2026-06-21T22:29:41.4737366Z             },
2026-06-21T22:29:41.4737446Z             {
2026-06-21T22:29:41.4737565Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T22:29:41.4737646Z               "line": 128
2026-06-21T22:29:41.4737721Z             }
2026-06-21T22:29:41.4737806Z           ]
2026-06-21T22:29:41.4737888Z         }
2026-06-21T22:29:41.4737983Z       }
2026-06-21T22:29:41.4738059Z     },
2026-06-21T22:29:41.4738144Z     {
2026-06-21T22:29:41.4738227Z       "id": "REQ-SUBNET-1",
2026-06-21T22:29:41.4738551Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T22:29:41.4738637Z       "requiredStages": [
2026-06-21T22:29:41.4738727Z         "impl",
2026-06-21T22:29:41.4738813Z         "unit"
2026-06-21T22:29:41.4738894Z       ],
2026-06-21T22:29:41.4739065Z       "stages": {
2026-06-21T22:29:41.4739146Z         "doc": {
2026-06-21T22:29:41.4739242Z           "complete": false,
2026-06-21T22:29:41.4739323Z           "evidence": []
2026-06-21T22:29:41.4739413Z         },
2026-06-21T22:29:41.4739500Z         "impl": {
2026-06-21T22:29:41.4739581Z           "complete": true,
2026-06-21T22:29:41.4739671Z           "evidence": [
2026-06-21T22:29:41.4739752Z             {
2026-06-21T22:29:41.4739891Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4739980Z               "line": 281
2026-06-21T22:29:41.4740067Z             },
2026-06-21T22:29:41.4740149Z             {
2026-06-21T22:29:41.4740276Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4740366Z               "line": 651
2026-06-21T22:29:41.4740466Z             },
2026-06-21T22:29:41.4740551Z             {
2026-06-21T22:29:41.4740659Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4740735Z               "line": 3399
2026-06-21T22:29:41.4740822Z             },
2026-06-21T22:29:41.4740899Z             {
2026-06-21T22:29:41.4741007Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4741094Z               "line": 3709
2026-06-21T22:29:41.4741179Z             },
2026-06-21T22:29:41.4741265Z             {
2026-06-21T22:29:41.4741360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4741442Z               "line": 3728
2026-06-21T22:29:41.4741527Z             },
2026-06-21T22:29:41.4741608Z             {
2026-06-21T22:29:41.4741713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4741800Z               "line": 3792
2026-06-21T22:29:41.4741885Z             },
2026-06-21T22:29:41.4741965Z             {
2026-06-21T22:29:41.4742072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4742275Z               "line": 3834
2026-06-21T22:29:41.4742358Z             },
2026-06-21T22:29:41.4742434Z             {
2026-06-21T22:29:41.4742537Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4742629Z               "line": 4023
2026-06-21T22:29:41.4742706Z             },
2026-06-21T22:29:41.4742791Z             {
2026-06-21T22:29:41.4742890Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4742985Z               "line": 4093
2026-06-21T22:29:41.4743066Z             },
2026-06-21T22:29:41.4743155Z             {
2026-06-21T22:29:41.4743254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4743336Z               "line": 4317
2026-06-21T22:29:41.4743521Z             },
2026-06-21T22:29:41.4743602Z             {
2026-06-21T22:29:41.4743708Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4743794Z               "line": 4961
2026-06-21T22:29:41.4743874Z             },
2026-06-21T22:29:41.4743951Z             {
2026-06-21T22:29:41.4744065Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4744146Z               "line": 418
2026-06-21T22:29:41.4744232Z             }
2026-06-21T22:29:41.4744314Z           ]
2026-06-21T22:29:41.4744394Z         },
2026-06-21T22:29:41.4744484Z         "int": {
2026-06-21T22:29:41.4744570Z           "complete": false,
2026-06-21T22:29:41.4744653Z           "evidence": []
2026-06-21T22:29:41.4744737Z         },
2026-06-21T22:29:41.4744818Z         "unit": {
2026-06-21T22:29:41.4744905Z           "complete": true,
2026-06-21T22:29:41.4744987Z           "evidence": [
2026-06-21T22:29:41.4745071Z             {
2026-06-21T22:29:41.4745205Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4745302Z               "line": 1584
2026-06-21T22:29:41.4745385Z             },
2026-06-21T22:29:41.4745462Z             {
2026-06-21T22:29:41.4745563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4745644Z               "line": 9964
2026-06-21T22:29:41.4745743Z             },
2026-06-21T22:29:41.4745818Z             {
2026-06-21T22:29:41.4745915Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4746001Z               "line": 10134
2026-06-21T22:29:41.4746086Z             },
2026-06-21T22:29:41.4746171Z             {
2026-06-21T22:29:41.4746263Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4746353Z               "line": 10141
2026-06-21T22:29:41.4746443Z             },
2026-06-21T22:29:41.4746520Z             {
2026-06-21T22:29:41.4746625Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4746706Z               "line": 10194
2026-06-21T22:29:41.4746791Z             },
2026-06-21T22:29:41.4746883Z             {
2026-06-21T22:29:41.4746982Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4747063Z               "line": 10211
2026-06-21T22:29:41.4747145Z             },
2026-06-21T22:29:41.4747226Z             {
2026-06-21T22:29:41.4747330Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4747416Z               "line": 10241
2026-06-21T22:29:41.4747503Z             },
2026-06-21T22:29:41.4747584Z             {
2026-06-21T22:29:41.4747688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4747774Z               "line": 10357
2026-06-21T22:29:41.4747856Z             },
2026-06-21T22:29:41.4747935Z             {
2026-06-21T22:29:41.4748035Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4748121Z               "line": 10508
2026-06-21T22:29:41.4748197Z             }
2026-06-21T22:29:41.4748281Z           ]
2026-06-21T22:29:41.4748366Z         }
2026-06-21T22:29:41.4748452Z       }
2026-06-21T22:29:41.4748534Z     },
2026-06-21T22:29:41.4748605Z     {
2026-06-21T22:29:41.4748700Z       "id": "REQ-SUBNET-2",
2026-06-21T22:29:41.4748929Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T22:29:41.4749111Z       "requiredStages": [
2026-06-21T22:29:41.4749187Z         "impl",
2026-06-21T22:29:41.4749402Z         "unit",
2026-06-21T22:29:41.4749478Z         "int"
2026-06-21T22:29:41.4749564Z       ],
2026-06-21T22:29:41.4749639Z       "stages": {
2026-06-21T22:29:41.4749726Z         "doc": {
2026-06-21T22:29:41.4749826Z           "complete": true,
2026-06-21T22:29:41.4749902Z           "evidence": [
2026-06-21T22:29:41.4752445Z             {
2026-06-21T22:29:41.4752636Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T22:29:41.4752726Z               "line": 60
2026-06-21T22:29:41.4752798Z             }
2026-06-21T22:29:41.4752879Z           ]
2026-06-21T22:29:41.4752965Z         },
2026-06-21T22:29:41.4753046Z         "impl": {
2026-06-21T22:29:41.4753290Z           "complete": true,
2026-06-21T22:29:41.4753375Z           "evidence": [
2026-06-21T22:29:41.4753512Z             {
2026-06-21T22:29:41.4753631Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4753720Z               "line": 964
2026-06-21T22:29:41.4753810Z             },
2026-06-21T22:29:41.4753891Z             {
2026-06-21T22:29:41.4754030Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4754119Z               "line": 2199
2026-06-21T22:29:41.4754206Z             },
2026-06-21T22:29:41.4754287Z             {
2026-06-21T22:29:41.4754491Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4754597Z               "line": 683
2026-06-21T22:29:41.4754674Z             },
2026-06-21T22:29:41.4754753Z             {
2026-06-21T22:29:41.4754869Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T22:29:41.4754945Z               "line": 867
2026-06-21T22:29:41.4755031Z             },
2026-06-21T22:29:41.4755126Z             {
2026-06-21T22:29:41.4755246Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4755336Z               "line": 26
2026-06-21T22:29:41.4755417Z             },
2026-06-21T22:29:41.4755508Z             {
2026-06-21T22:29:41.4755626Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4755727Z               "line": 60
2026-06-21T22:29:41.4755809Z             },
2026-06-21T22:29:41.4755895Z             {
2026-06-21T22:29:41.4756008Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4756100Z               "line": 168
2026-06-21T22:29:41.4756186Z             },
2026-06-21T22:29:41.4756270Z             {
2026-06-21T22:29:41.4756383Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4756475Z               "line": 295
2026-06-21T22:29:41.4756562Z             },
2026-06-21T22:29:41.4756641Z             {
2026-06-21T22:29:41.4756761Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4756852Z               "line": 417
2026-06-21T22:29:41.4756941Z             },
2026-06-21T22:29:41.4757027Z             {
2026-06-21T22:29:41.4757157Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T22:29:41.4757252Z               "line": 252
2026-06-21T22:29:41.4757342Z             },
2026-06-21T22:29:41.4757434Z             {
2026-06-21T22:29:41.4757542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4757637Z               "line": 3755
2026-06-21T22:29:41.4757729Z             },
2026-06-21T22:29:41.4757829Z             {
2026-06-21T22:29:41.4757938Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4758030Z               "line": 4256
2026-06-21T22:29:41.4758111Z             },
2026-06-21T22:29:41.4758200Z             {
2026-06-21T22:29:41.4758305Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4758393Z               "line": 4892
2026-06-21T22:29:41.4758486Z             }
2026-06-21T22:29:41.4758581Z           ]
2026-06-21T22:29:41.4758662Z         },
2026-06-21T22:29:41.4758743Z         "int": {
2026-06-21T22:29:41.4758832Z           "complete": true,
2026-06-21T22:29:41.4758921Z           "evidence": [
2026-06-21T22:29:41.4759080Z             {
2026-06-21T22:29:41.4759217Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T22:29:41.4759499Z               "line": 22
2026-06-21T22:29:41.4759575Z             },
2026-06-21T22:29:41.4759662Z             {
2026-06-21T22:29:41.4759785Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4759871Z               "line": 645
2026-06-21T22:29:41.4759952Z             },
2026-06-21T22:29:41.4760038Z             {
2026-06-21T22:29:41.4760147Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4760243Z               "line": 887
2026-06-21T22:29:41.4760320Z             }
2026-06-21T22:29:41.4760405Z           ]
2026-06-21T22:29:41.4760486Z         },
2026-06-21T22:29:41.4760677Z         "unit": {
2026-06-21T22:29:41.4760772Z           "complete": true,
2026-06-21T22:29:41.4760853Z           "evidence": [
2026-06-21T22:29:41.4760935Z             {
2026-06-21T22:29:41.4761062Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4761149Z               "line": 586
2026-06-21T22:29:41.4761240Z             },
2026-06-21T22:29:41.4761321Z             {
2026-06-21T22:29:41.4761425Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4761514Z               "line": 10004
2026-06-21T22:29:41.4761601Z             },
2026-06-21T22:29:41.4761680Z             {
2026-06-21T22:29:41.4761779Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4761889Z               "line": 10715
2026-06-21T22:29:41.4761966Z             }
2026-06-21T22:29:41.4762047Z           ]
2026-06-21T22:29:41.4762122Z         }
2026-06-21T22:29:41.4762209Z       }
2026-06-21T22:29:41.4762291Z     },
2026-06-21T22:29:41.4762371Z     {
2026-06-21T22:29:41.4762470Z       "id": "REQ-SUBNET-3",
2026-06-21T22:29:41.4762738Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T22:29:41.4762838Z       "requiredStages": [
2026-06-21T22:29:41.4762920Z         "impl",
2026-06-21T22:29:41.4763005Z         "unit"
2026-06-21T22:29:41.4763095Z       ],
2026-06-21T22:29:41.4763183Z       "stages": {
2026-06-21T22:29:41.4763296Z         "doc": {
2026-06-21T22:29:41.4763377Z           "complete": false,
2026-06-21T22:29:41.4763468Z           "evidence": []
2026-06-21T22:29:41.4763549Z         },
2026-06-21T22:29:41.4763639Z         "impl": {
2026-06-21T22:29:41.4763729Z           "complete": true,
2026-06-21T22:29:41.4763812Z           "evidence": [
2026-06-21T22:29:41.4763898Z             {
2026-06-21T22:29:41.4764029Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4764110Z               "line": 152
2026-06-21T22:29:41.4764196Z             },
2026-06-21T22:29:41.4764285Z             {
2026-06-21T22:29:41.4764412Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4764499Z               "line": 299
2026-06-21T22:29:41.4764586Z             },
2026-06-21T22:29:41.4764665Z             {
2026-06-21T22:29:41.4764790Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4764890Z               "line": 443
2026-06-21T22:29:41.4764980Z             },
2026-06-21T22:29:41.4765066Z             {
2026-06-21T22:29:41.4765186Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4765286Z               "line": 532
2026-06-21T22:29:41.4765357Z             },
2026-06-21T22:29:41.4765448Z             {
2026-06-21T22:29:41.4765567Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4765657Z               "line": 125
2026-06-21T22:29:41.4765744Z             },
2026-06-21T22:29:41.4765830Z             {
2026-06-21T22:29:41.4765957Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4766045Z               "line": 253
2026-06-21T22:29:41.4766126Z             },
2026-06-21T22:29:41.4766200Z             {
2026-06-21T22:29:41.4766321Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4766403Z               "line": 264
2026-06-21T22:29:41.4766487Z             },
2026-06-21T22:29:41.4766760Z             {
2026-06-21T22:29:41.4766863Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4766948Z               "line": 285
2026-06-21T22:29:41.4767035Z             },
2026-06-21T22:29:41.4767127Z             {
2026-06-21T22:29:41.4767249Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4767335Z               "line": 621
2026-06-21T22:29:41.4767421Z             },
2026-06-21T22:29:41.4767506Z             {
2026-06-21T22:29:41.4767616Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4767703Z               "line": 680
2026-06-21T22:29:41.4767784Z             },
2026-06-21T22:29:41.4767960Z             {
2026-06-21T22:29:41.4768084Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.4768173Z               "line": 61
2026-06-21T22:29:41.4768255Z             },
2026-06-21T22:29:41.4768342Z             {
2026-06-21T22:29:41.4768461Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.4768556Z               "line": 90
2026-06-21T22:29:41.4768643Z             },
2026-06-21T22:29:41.4768718Z             {
2026-06-21T22:29:41.4768837Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.4768919Z               "line": 125
2026-06-21T22:29:41.4769099Z             },
2026-06-21T22:29:41.4769184Z             {
2026-06-21T22:29:41.4769303Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T22:29:41.4769392Z               "line": 9
2026-06-21T22:29:41.4769468Z             },
2026-06-21T22:29:41.4769549Z             {
2026-06-21T22:29:41.4769654Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4769759Z               "line": 4093
2026-06-21T22:29:41.4769844Z             },
2026-06-21T22:29:41.4769926Z             {
2026-06-21T22:29:41.4770022Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4770106Z               "line": 445
2026-06-21T22:29:41.4770193Z             }
2026-06-21T22:29:41.4770279Z           ]
2026-06-21T22:29:41.4770360Z         },
2026-06-21T22:29:41.4770445Z         "int": {
2026-06-21T22:29:41.4770532Z           "complete": false,
2026-06-21T22:29:41.4770665Z           "evidence": []
2026-06-21T22:29:41.4770750Z         },
2026-06-21T22:29:41.4770837Z         "unit": {
2026-06-21T22:29:41.4770918Z           "complete": true,
2026-06-21T22:29:41.4771008Z           "evidence": [
2026-06-21T22:29:41.4771089Z             {
2026-06-21T22:29:41.4771210Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4771294Z               "line": 1356
2026-06-21T22:29:41.4771380Z             },
2026-06-21T22:29:41.4771471Z             {
2026-06-21T22:29:41.4771594Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4771680Z               "line": 1713
2026-06-21T22:29:41.4771762Z             },
2026-06-21T22:29:41.4771844Z             {
2026-06-21T22:29:41.4771971Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4772060Z               "line": 892
2026-06-21T22:29:41.4772147Z             },
2026-06-21T22:29:41.4772226Z             {
2026-06-21T22:29:41.4772340Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4772430Z               "line": 991
2026-06-21T22:29:41.4772512Z             },
2026-06-21T22:29:41.4772602Z             {
2026-06-21T22:29:41.4772706Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4772789Z               "line": 1041
2026-06-21T22:29:41.4772874Z             },
2026-06-21T22:29:41.4772950Z             {
2026-06-21T22:29:41.4773060Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4773146Z               "line": 1100
2026-06-21T22:29:41.4773232Z             },
2026-06-21T22:29:41.4773317Z             {
2026-06-21T22:29:41.4773442Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T22:29:41.4773532Z               "line": 234
2026-06-21T22:29:41.4773723Z             },
2026-06-21T22:29:41.4773804Z             {
2026-06-21T22:29:41.4773927Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T22:29:41.4774023Z               "line": 49
2026-06-21T22:29:41.4774095Z             },
2026-06-21T22:29:41.4774185Z             {
2026-06-21T22:29:41.4774285Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4774372Z               "line": 10357
2026-06-21T22:29:41.4774462Z             },
2026-06-21T22:29:41.4774542Z             {
2026-06-21T22:29:41.4774651Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4774727Z               "line": 10463
2026-06-21T22:29:41.4774812Z             },
2026-06-21T22:29:41.4774997Z             {
2026-06-21T22:29:41.4775093Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4775178Z               "line": 10681
2026-06-21T22:29:41.4775259Z             }
2026-06-21T22:29:41.4775346Z           ]
2026-06-21T22:29:41.4775427Z         }
2026-06-21T22:29:41.4775507Z       }
2026-06-21T22:29:41.4775602Z     },
2026-06-21T22:29:41.4775684Z     {
2026-06-21T22:29:41.4775784Z       "id": "REQ-SUBNET-4",
2026-06-21T22:29:41.4776075Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T22:29:41.4776175Z       "requiredStages": [
2026-06-21T22:29:41.4776261Z         "impl",
2026-06-21T22:29:41.4776338Z         "unit"
2026-06-21T22:29:41.4776427Z       ],
2026-06-21T22:29:41.4776513Z       "stages": {
2026-06-21T22:29:41.4776600Z         "doc": {
2026-06-21T22:29:41.4776681Z           "complete": true,
2026-06-21T22:29:41.4776770Z           "evidence": [
2026-06-21T22:29:41.4776852Z             {
2026-06-21T22:29:41.4777005Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T22:29:41.4777094Z               "line": 60
2026-06-21T22:29:41.4777181Z             }
2026-06-21T22:29:41.4777259Z           ]
2026-06-21T22:29:41.4777339Z         },
2026-06-21T22:29:41.4777428Z         "impl": {
2026-06-21T22:29:41.4777518Z           "complete": true,
2026-06-21T22:29:41.4777599Z           "evidence": [
2026-06-21T22:29:41.4777682Z             {
2026-06-21T22:29:41.4777775Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4777861Z               "line": 3399
2026-06-21T22:29:41.4777939Z             },
2026-06-21T22:29:41.4778025Z             {
2026-06-21T22:29:41.4778128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4778220Z               "line": 4859
2026-06-21T22:29:41.4778301Z             },
2026-06-21T22:29:41.4778377Z             {
2026-06-21T22:29:41.4778486Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4778568Z               "line": 4892
2026-06-21T22:29:41.4778658Z             }
2026-06-21T22:29:41.4778739Z           ]
2026-06-21T22:29:41.4778815Z         },
2026-06-21T22:29:41.4778898Z         "int": {
2026-06-21T22:29:41.4779087Z           "complete": false,
2026-06-21T22:29:41.4779179Z           "evidence": []
2026-06-21T22:29:41.4779287Z         },
2026-06-21T22:29:41.4779378Z         "unit": {
2026-06-21T22:29:41.4779469Z           "complete": true,
2026-06-21T22:29:41.4779551Z           "evidence": [
2026-06-21T22:29:41.4779635Z             {
2026-06-21T22:29:41.4779734Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4779825Z               "line": 10120
2026-06-21T22:29:41.4779910Z             },
2026-06-21T22:29:41.4779990Z             {
2026-06-21T22:29:41.4780089Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4780176Z               "line": 10194
2026-06-21T22:29:41.4780258Z             }
2026-06-21T22:29:41.4780337Z           ]
2026-06-21T22:29:41.4780433Z         }
2026-06-21T22:29:41.4780515Z       }
2026-06-21T22:29:41.4780600Z     },
2026-06-21T22:29:41.4780681Z     {
2026-06-21T22:29:41.4780782Z       "id": "REQ-SUBNET-5",
2026-06-21T22:29:41.4781926Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T22:29:41.4782221Z       "requiredStages": [
2026-06-21T22:29:41.4782303Z         "impl",
2026-06-21T22:29:41.4782385Z         "unit",
2026-06-21T22:29:41.4782465Z         "int"
2026-06-21T22:29:41.4782554Z       ],
2026-06-21T22:29:41.4782644Z       "stages": {
2026-06-21T22:29:41.4782735Z         "doc": {
2026-06-21T22:29:41.4782819Z           "complete": false,
2026-06-21T22:29:41.4782900Z           "evidence": []
2026-06-21T22:29:41.4783082Z         },
2026-06-21T22:29:41.4783171Z         "impl": {
2026-06-21T22:29:41.4783252Z           "complete": true,
2026-06-21T22:29:41.4783339Z           "evidence": [
2026-06-21T22:29:41.4783420Z             {
2026-06-21T22:29:41.4783543Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T22:29:41.4783654Z               "line": 128
2026-06-21T22:29:41.4783734Z             },
2026-06-21T22:29:41.4783825Z             {
2026-06-21T22:29:41.4783944Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T22:29:41.4784026Z               "line": 413
2026-06-21T22:29:41.4784111Z             },
2026-06-21T22:29:41.4784182Z             {
2026-06-21T22:29:41.4784303Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4784388Z               "line": 74
2026-06-21T22:29:41.4784473Z             },
2026-06-21T22:29:41.4784559Z             {
2026-06-21T22:29:41.4784679Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.4784783Z               "line": 332
2026-06-21T22:29:41.4784869Z             },
2026-06-21T22:29:41.4784942Z             {
2026-06-21T22:29:41.4785060Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.4785140Z               "line": 621
2026-06-21T22:29:41.4785225Z             },
2026-06-21T22:29:41.4785325Z             {
2026-06-21T22:29:41.4785443Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.4785528Z               "line": 31
2026-06-21T22:29:41.4785614Z             },
2026-06-21T22:29:41.4785701Z             {
2026-06-21T22:29:41.4785823Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.4785911Z               "line": 50
2026-06-21T22:29:41.4786001Z             },
2026-06-21T22:29:41.4786081Z             {
2026-06-21T22:29:41.4786191Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.4786277Z               "line": 69
2026-06-21T22:29:41.4786373Z             },
2026-06-21T22:29:41.4786462Z             {
2026-06-21T22:29:41.4786564Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.4786649Z               "line": 113
2026-06-21T22:29:41.4786735Z             },
2026-06-21T22:29:41.4786816Z             {
2026-06-21T22:29:41.4786935Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T22:29:41.4787026Z               "line": 25
2026-06-21T22:29:41.4787116Z             },
2026-06-21T22:29:41.4787198Z             {
2026-06-21T22:29:41.4787326Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T22:29:41.4787407Z               "line": 34
2026-06-21T22:29:41.4787494Z             },
2026-06-21T22:29:41.4787579Z             {
2026-06-21T22:29:41.4787703Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T22:29:41.4787795Z               "line": 17
2026-06-21T22:29:41.4787876Z             },
2026-06-21T22:29:41.4787964Z             {
2026-06-21T22:29:41.4788064Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4788174Z               "line": 4817
2026-06-21T22:29:41.4788261Z             },
2026-06-21T22:29:41.4788340Z             {
2026-06-21T22:29:41.4788451Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T22:29:41.4788537Z               "line": 419
2026-06-21T22:29:41.4788622Z             }
2026-06-21T22:29:41.4788780Z           ]
2026-06-21T22:29:41.4788861Z         },
2026-06-21T22:29:41.4788937Z         "int": {
2026-06-21T22:29:41.4789109Z           "complete": true,
2026-06-21T22:29:41.4789190Z           "evidence": [
2026-06-21T22:29:41.4789276Z             {
2026-06-21T22:29:41.4789400Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4789481Z               "line": 821
2026-06-21T22:29:41.4789561Z             }
2026-06-21T22:29:41.4789632Z           ]
2026-06-21T22:29:41.4789720Z         },
2026-06-21T22:29:41.4789805Z         "unit": {
2026-06-21T22:29:41.4789894Z           "complete": true,
2026-06-21T22:29:41.4790092Z           "evidence": [
2026-06-21T22:29:41.4790176Z             {
2026-06-21T22:29:41.4790295Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.4790376Z               "line": 341
2026-06-21T22:29:41.4790466Z             },
2026-06-21T22:29:41.4790554Z             {
2026-06-21T22:29:41.4790669Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T22:29:41.4790760Z               "line": 1115
2026-06-21T22:29:41.4790841Z             },
2026-06-21T22:29:41.4790926Z             {
2026-06-21T22:29:41.4791036Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T22:29:41.4791127Z               "line": 151
2026-06-21T22:29:41.4791207Z             },
2026-06-21T22:29:41.4791288Z             {
2026-06-21T22:29:41.4791418Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T22:29:41.4791508Z               "line": 61
2026-06-21T22:29:41.4791584Z             },
2026-06-21T22:29:41.4791666Z             {
2026-06-21T22:29:41.4791790Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T22:29:41.4791889Z               "line": 111
2026-06-21T22:29:41.4791972Z             },
2026-06-21T22:29:41.4792057Z             {
2026-06-21T22:29:41.4792166Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T22:29:41.4792257Z               "line": 138
2026-06-21T22:29:41.4792344Z             },
2026-06-21T22:29:41.4792423Z             {
2026-06-21T22:29:41.4792543Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T22:29:41.4792615Z               "line": 148
2026-06-21T22:29:41.4792706Z             },
2026-06-21T22:29:41.4792786Z             {
2026-06-21T22:29:41.4792897Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4792993Z               "line": 10021
2026-06-21T22:29:41.4793072Z             }
2026-06-21T22:29:41.4793153Z           ]
2026-06-21T22:29:41.4793234Z         }
2026-06-21T22:29:41.4793319Z       }
2026-06-21T22:29:41.4793393Z     },
2026-06-21T22:29:41.4793479Z     {
2026-06-21T22:29:41.4793579Z       "id": "REQ-SUBNET-6",
2026-06-21T22:29:41.4794253Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T22:29:41.4794366Z       "requiredStages": [
2026-06-21T22:29:41.4794447Z         "impl",
2026-06-21T22:29:41.4794528Z         "unit"
2026-06-21T22:29:41.4794614Z       ],
2026-06-21T22:29:41.4794695Z       "stages": {
2026-06-21T22:29:41.4794781Z         "doc": {
2026-06-21T22:29:41.4794868Z           "complete": false,
2026-06-21T22:29:41.4794957Z           "evidence": []
2026-06-21T22:29:41.4795033Z         },
2026-06-21T22:29:41.4795124Z         "impl": {
2026-06-21T22:29:41.4795211Z           "complete": true,
2026-06-21T22:29:41.4795291Z           "evidence": [
2026-06-21T22:29:41.4795372Z             {
2026-06-21T22:29:41.4795497Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4795596Z               "line": 254
2026-06-21T22:29:41.4795681Z             },
2026-06-21T22:29:41.4795766Z             {
2026-06-21T22:29:41.4795867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4795960Z               "line": 4475
2026-06-21T22:29:41.4796165Z             },
2026-06-21T22:29:41.4796252Z             {
2026-06-21T22:29:41.4796360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4796446Z               "line": 4492
2026-06-21T22:29:41.4796533Z             },
2026-06-21T22:29:41.4796618Z             {
2026-06-21T22:29:41.4796718Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4796805Z               "line": 4545
2026-06-21T22:29:41.4796881Z             },
2026-06-21T22:29:41.4796966Z             {
2026-06-21T22:29:41.4797057Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4797138Z               "line": 4568
2026-06-21T22:29:41.4797228Z             }
2026-06-21T22:29:41.4797410Z           ]
2026-06-21T22:29:41.4797495Z         },
2026-06-21T22:29:41.4797581Z         "int": {
2026-06-21T22:29:41.4797681Z           "complete": false,
2026-06-21T22:29:41.4797773Z           "evidence": []
2026-06-21T22:29:41.4797858Z         },
2026-06-21T22:29:41.4797948Z         "unit": {
2026-06-21T22:29:41.4798045Z           "complete": true,
2026-06-21T22:29:41.4798135Z           "evidence": [
2026-06-21T22:29:41.4798210Z             {
2026-06-21T22:29:41.4798316Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4798407Z               "line": 10035
2026-06-21T22:29:41.4798482Z             },
2026-06-21T22:29:41.4798572Z             {
2026-06-21T22:29:41.4798676Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4798759Z               "line": 10068
2026-06-21T22:29:41.4798844Z             },
2026-06-21T22:29:41.4798934Z             {
2026-06-21T22:29:41.4799111Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4799211Z               "line": 10077
2026-06-21T22:29:41.4799301Z             }
2026-06-21T22:29:41.4799383Z           ]
2026-06-21T22:29:41.4799488Z         }
2026-06-21T22:29:41.4799568Z       }
2026-06-21T22:29:41.4799645Z     },
2026-06-21T22:29:41.4799726Z     {
2026-06-21T22:29:41.4799826Z       "id": "REQ-SUBNET-7",
2026-06-21T22:29:41.4801453Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T22:29:41.4801544Z       "requiredStages": [
2026-06-21T22:29:41.4801636Z         "impl",
2026-06-21T22:29:41.4801721Z         "unit"
2026-06-21T22:29:41.4801810Z       ],
2026-06-21T22:29:41.4801897Z       "stages": {
2026-06-21T22:29:41.4801983Z         "doc": {
2026-06-21T22:29:41.4802073Z           "complete": false,
2026-06-21T22:29:41.4802154Z           "evidence": []
2026-06-21T22:29:41.4802241Z         },
2026-06-21T22:29:41.4802331Z         "impl": {
2026-06-21T22:29:41.4802425Z           "complete": true,
2026-06-21T22:29:41.4802522Z           "evidence": [
2026-06-21T22:29:41.4802608Z             {
2026-06-21T22:29:41.4802740Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T22:29:41.4802832Z               "line": 17
2026-06-21T22:29:41.4802914Z             },
2026-06-21T22:29:41.4802997Z             {
2026-06-21T22:29:41.4803127Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4803214Z               "line": 103
2026-06-21T22:29:41.4803299Z             },
2026-06-21T22:29:41.4803384Z             {
2026-06-21T22:29:41.4803500Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T22:29:41.4803590Z               "line": 312
2026-06-21T22:29:41.4803679Z             },
2026-06-21T22:29:41.4803808Z             {
2026-06-21T22:29:41.4803945Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T22:29:41.4804029Z               "line": 131
2026-06-21T22:29:41.4804221Z             },
2026-06-21T22:29:41.4804301Z             {
2026-06-21T22:29:41.4804435Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4804517Z               "line": 160
2026-06-21T22:29:41.4804593Z             },
2026-06-21T22:29:41.4804678Z             {
2026-06-21T22:29:41.4804784Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4804864Z               "line": 447
2026-06-21T22:29:41.4804945Z             },
2026-06-21T22:29:41.4805045Z             {
2026-06-21T22:29:41.4805179Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4805302Z               "line": 670
2026-06-21T22:29:41.4805579Z             },
2026-06-21T22:29:41.4805675Z             {
2026-06-21T22:29:41.4805804Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4805889Z               "line": 710
2026-06-21T22:29:41.4805990Z             },
2026-06-21T22:29:41.4806091Z             {
2026-06-21T22:29:41.4806260Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4806355Z               "line": 766
2026-06-21T22:29:41.4806441Z             },
2026-06-21T22:29:41.4806525Z             {
2026-06-21T22:29:41.4806643Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4806730Z               "line": 136
2026-06-21T22:29:41.4806816Z             },
2026-06-21T22:29:41.4806887Z             {
2026-06-21T22:29:41.4807026Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4807116Z               "line": 139
2026-06-21T22:29:41.4807201Z             }
2026-06-21T22:29:41.4807282Z           ]
2026-06-21T22:29:41.4807379Z         },
2026-06-21T22:29:41.4807465Z         "int": {
2026-06-21T22:29:41.4807550Z           "complete": false,
2026-06-21T22:29:41.4807641Z           "evidence": []
2026-06-21T22:29:41.4807717Z         },
2026-06-21T22:29:41.4807793Z         "unit": {
2026-06-21T22:29:41.4807879Z           "complete": true,
2026-06-21T22:29:41.4807965Z           "evidence": [
2026-06-21T22:29:41.4808051Z             {
2026-06-21T22:29:41.4808160Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T22:29:41.4808241Z               "line": 136
2026-06-21T22:29:41.4808329Z             },
2026-06-21T22:29:41.4808408Z             {
2026-06-21T22:29:41.4808528Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T22:29:41.4808614Z               "line": 156
2026-06-21T22:29:41.4808699Z             },
2026-06-21T22:29:41.4808780Z             {
2026-06-21T22:29:41.4808910Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4809061Z               "line": 987
2026-06-21T22:29:41.4809155Z             },
2026-06-21T22:29:41.4809246Z             {
2026-06-21T22:29:41.4809418Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T22:29:41.4809551Z               "line": 1009
2026-06-21T22:29:41.4809653Z             },
2026-06-21T22:29:41.4809733Z             {
2026-06-21T22:29:41.4809871Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T22:29:41.4809976Z               "line": 1419
2026-06-21T22:29:41.4810067Z             },
2026-06-21T22:29:41.4810147Z             {
2026-06-21T22:29:41.4810272Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T22:29:41.4810362Z               "line": 1036
2026-06-21T22:29:41.4810438Z             }
2026-06-21T22:29:41.4810525Z           ]
2026-06-21T22:29:41.4810620Z         }
2026-06-21T22:29:41.4810720Z       }
2026-06-21T22:29:41.4810786Z     },
2026-06-21T22:29:41.4810869Z     {
2026-06-21T22:29:41.4810959Z       "id": "REQ-SUBNET-8",
2026-06-21T22:29:41.4812065Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T22:29:41.4812290Z       "requiredStages": [
2026-06-21T22:29:41.4812375Z         "impl",
2026-06-21T22:29:41.4812462Z         "unit"
2026-06-21T22:29:41.4812534Z       ],
2026-06-21T22:29:41.4812619Z       "stages": {
2026-06-21T22:29:41.4812695Z         "doc": {
2026-06-21T22:29:41.4812791Z           "complete": false,
2026-06-21T22:29:41.4812877Z           "evidence": []
2026-06-21T22:29:41.4812963Z         },
2026-06-21T22:29:41.4813044Z         "impl": {
2026-06-21T22:29:41.4813125Z           "complete": true,
2026-06-21T22:29:41.4813220Z           "evidence": [
2026-06-21T22:29:41.4813301Z             {
2026-06-21T22:29:41.4813525Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4813607Z               "line": 3835
2026-06-21T22:29:41.4813688Z             },
2026-06-21T22:29:41.4813769Z             {
2026-06-21T22:29:41.4813863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4813954Z               "line": 3864
2026-06-21T22:29:41.4814046Z             },
2026-06-21T22:29:41.4814136Z             {
2026-06-21T22:29:41.4814244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4814329Z               "line": 3881
2026-06-21T22:29:41.4814415Z             },
2026-06-21T22:29:41.4814491Z             {
2026-06-21T22:29:41.4814599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4814681Z               "line": 3904
2026-06-21T22:29:41.4814771Z             },
2026-06-21T22:29:41.4814857Z             {
2026-06-21T22:29:41.4814957Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4815044Z               "line": 4318
2026-06-21T22:29:41.4815129Z             }
2026-06-21T22:29:41.4815218Z           ]
2026-06-21T22:29:41.4815295Z         },
2026-06-21T22:29:41.4815387Z         "int": {
2026-06-21T22:29:41.4815487Z           "complete": false,
2026-06-21T22:29:41.4815567Z           "evidence": []
2026-06-21T22:29:41.4815649Z         },
2026-06-21T22:29:41.4815730Z         "unit": {
2026-06-21T22:29:41.4815834Z           "complete": true,
2026-06-21T22:29:41.4815920Z           "evidence": [
2026-06-21T22:29:41.4816012Z             {
2026-06-21T22:29:41.4816115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4816206Z               "line": 10225
2026-06-21T22:29:41.4816293Z             },
2026-06-21T22:29:41.4816369Z             {
2026-06-21T22:29:41.4816478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4816559Z               "line": 10241
2026-06-21T22:29:41.4816646Z             }
2026-06-21T22:29:41.4816731Z           ]
2026-06-21T22:29:41.4816816Z         }
2026-06-21T22:29:41.4816901Z       }
2026-06-21T22:29:41.4816987Z     },
2026-06-21T22:29:41.4817071Z     {
2026-06-21T22:29:41.4817166Z       "id": "REQ-TERM-1",
2026-06-21T22:29:41.4817348Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T22:29:41.4817447Z       "requiredStages": [
2026-06-21T22:29:41.4817533Z         "impl",
2026-06-21T22:29:41.4817625Z         "unit"
2026-06-21T22:29:41.4817696Z       ],
2026-06-21T22:29:41.4817790Z       "stages": {
2026-06-21T22:29:41.4817882Z         "doc": {
2026-06-21T22:29:41.4817981Z           "complete": false,
2026-06-21T22:29:41.4818076Z           "evidence": []
2026-06-21T22:29:41.4818153Z         },
2026-06-21T22:29:41.4818240Z         "impl": {
2026-06-21T22:29:41.4818324Z           "complete": true,
2026-06-21T22:29:41.4818410Z           "evidence": [
2026-06-21T22:29:41.4818491Z             {
2026-06-21T22:29:41.4818602Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.4818697Z               "line": 59
2026-06-21T22:29:41.4818778Z             },
2026-06-21T22:29:41.4818865Z             {
2026-06-21T22:29:41.4822494Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T22:29:41.4822611Z               "line": 234
2026-06-21T22:29:41.4822698Z             },
2026-06-21T22:29:41.4822780Z             {
2026-06-21T22:29:41.4822907Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T22:29:41.4823141Z               "line": 100
2026-06-21T22:29:41.4823231Z             }
2026-06-21T22:29:41.4823308Z           ]
2026-06-21T22:29:41.4823390Z         },
2026-06-21T22:29:41.4823475Z         "int": {
2026-06-21T22:29:41.4823574Z           "complete": false,
2026-06-21T22:29:41.4823662Z           "evidence": []
2026-06-21T22:29:41.4823742Z         },
2026-06-21T22:29:41.4823823Z         "unit": {
2026-06-21T22:29:41.4823908Z           "complete": true,
2026-06-21T22:29:41.4824000Z           "evidence": [
2026-06-21T22:29:41.4824080Z             {
2026-06-21T22:29:41.4824209Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T22:29:41.4824405Z               "line": 24
2026-06-21T22:29:41.4824491Z             },
2026-06-21T22:29:41.4824582Z             {
2026-06-21T22:29:41.4824692Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T22:29:41.4824785Z               "line": 56
2026-06-21T22:29:41.4824856Z             }
2026-06-21T22:29:41.4824943Z           ]
2026-06-21T22:29:41.4825032Z         }
2026-06-21T22:29:41.4825112Z       }
2026-06-21T22:29:41.4825202Z     },
2026-06-21T22:29:41.4825274Z     {
2026-06-21T22:29:41.4825370Z       "id": "REQ-TERM-2",
2026-06-21T22:29:41.4825540Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T22:29:41.4825637Z       "requiredStages": [
2026-06-21T22:29:41.4825723Z         "impl",
2026-06-21T22:29:41.4825807Z         "unit"
2026-06-21T22:29:41.4825895Z       ],
2026-06-21T22:29:41.4825980Z       "stages": {
2026-06-21T22:29:41.4826061Z         "doc": {
2026-06-21T22:29:41.4826156Z           "complete": false,
2026-06-21T22:29:41.4826242Z           "evidence": []
2026-06-21T22:29:41.4826328Z         },
2026-06-21T22:29:41.4826413Z         "impl": {
2026-06-21T22:29:41.4826509Z           "complete": true,
2026-06-21T22:29:41.4826600Z           "evidence": [
2026-06-21T22:29:41.4826684Z             {
2026-06-21T22:29:41.4826795Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T22:29:41.4826886Z               "line": 117
2026-06-21T22:29:41.4826976Z             },
2026-06-21T22:29:41.4827057Z             {
2026-06-21T22:29:41.4827187Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T22:29:41.4827268Z               "line": 127
2026-06-21T22:29:41.4827352Z             }
2026-06-21T22:29:41.4827432Z           ]
2026-06-21T22:29:41.4827514Z         },
2026-06-21T22:29:41.4827604Z         "int": {
2026-06-21T22:29:41.4827693Z           "complete": false,
2026-06-21T22:29:41.4827788Z           "evidence": []
2026-06-21T22:29:41.4827870Z         },
2026-06-21T22:29:41.4827960Z         "unit": {
2026-06-21T22:29:41.4828064Z           "complete": true,
2026-06-21T22:29:41.4828156Z           "evidence": [
2026-06-21T22:29:41.4828236Z             {
2026-06-21T22:29:41.4828345Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T22:29:41.4828442Z               "line": 46
2026-06-21T22:29:41.4828528Z             },
2026-06-21T22:29:41.4828618Z             {
2026-06-21T22:29:41.4828732Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T22:29:41.4828824Z               "line": 77
2026-06-21T22:29:41.4828908Z             }
2026-06-21T22:29:41.4829081Z           ]
2026-06-21T22:29:41.4829162Z         }
2026-06-21T22:29:41.4829243Z       }
2026-06-21T22:29:41.4829328Z     },
2026-06-21T22:29:41.4829410Z     {
2026-06-21T22:29:41.4829505Z       "id": "REQ-TERM-3",
2026-06-21T22:29:41.4829653Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T22:29:41.4829749Z       "requiredStages": [
2026-06-21T22:29:41.4829825Z         "impl",
2026-06-21T22:29:41.4829910Z         "unit"
2026-06-21T22:29:41.4830006Z       ],
2026-06-21T22:29:41.4830093Z       "stages": {
2026-06-21T22:29:41.4830177Z         "doc": {
2026-06-21T22:29:41.4830272Z           "complete": false,
2026-06-21T22:29:41.4830362Z           "evidence": []
2026-06-21T22:29:41.4830444Z         },
2026-06-21T22:29:41.4830533Z         "impl": {
2026-06-21T22:29:41.4830811Z           "complete": true,
2026-06-21T22:29:41.4830896Z           "evidence": [
2026-06-21T22:29:41.4830987Z             {
2026-06-21T22:29:41.4831101Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T22:29:41.4831187Z               "line": 71
2026-06-21T22:29:41.4831268Z             }
2026-06-21T22:29:41.4831355Z           ]
2026-06-21T22:29:41.4831440Z         },
2026-06-21T22:29:41.4831520Z         "int": {
2026-06-21T22:29:41.4831606Z           "complete": false,
2026-06-21T22:29:41.4831698Z           "evidence": []
2026-06-21T22:29:41.4831773Z         },
2026-06-21T22:29:41.4831869Z         "unit": {
2026-06-21T22:29:41.4832060Z           "complete": true,
2026-06-21T22:29:41.4832150Z           "evidence": [
2026-06-21T22:29:41.4832231Z             {
2026-06-21T22:29:41.4832351Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T22:29:41.4832431Z               "line": 37
2026-06-21T22:29:41.4832516Z             },
2026-06-21T22:29:41.4832602Z             {
2026-06-21T22:29:41.4832725Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T22:29:41.4832819Z               "line": 67
2026-06-21T22:29:41.4832895Z             }
2026-06-21T22:29:41.4832981Z           ]
2026-06-21T22:29:41.4833068Z         }
2026-06-21T22:29:41.4833148Z       }
2026-06-21T22:29:41.4833234Z     },
2026-06-21T22:29:41.4833316Z     {
2026-06-21T22:29:41.4833405Z       "id": "REQ-TERM-4",
2026-06-21T22:29:41.4833873Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T22:29:41.4833978Z       "requiredStages": [
2026-06-21T22:29:41.4834068Z         "impl",
2026-06-21T22:29:41.4834149Z         "unit",
2026-06-21T22:29:41.4834227Z         "int"
2026-06-21T22:29:41.4834311Z       ],
2026-06-21T22:29:41.4834397Z       "stages": {
2026-06-21T22:29:41.4834478Z         "doc": {
2026-06-21T22:29:41.4834575Z           "complete": false,
2026-06-21T22:29:41.4834683Z           "evidence": []
2026-06-21T22:29:41.4834769Z         },
2026-06-21T22:29:41.4834856Z         "impl": {
2026-06-21T22:29:41.4834951Z           "complete": true,
2026-06-21T22:29:41.4835036Z           "evidence": [
2026-06-21T22:29:41.4835113Z             {
2026-06-21T22:29:41.4835228Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4835322Z               "line": 37
2026-06-21T22:29:41.4835397Z             },
2026-06-21T22:29:41.4835483Z             {
2026-06-21T22:29:41.4835606Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4835691Z               "line": 25
2026-06-21T22:29:41.4835781Z             },
2026-06-21T22:29:41.4835868Z             {
2026-06-21T22:29:41.4835992Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4836072Z               "line": 114
2026-06-21T22:29:41.4836159Z             },
2026-06-21T22:29:41.4836244Z             {
2026-06-21T22:29:41.4836362Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4836455Z               "line": 267
2026-06-21T22:29:41.4836545Z             },
2026-06-21T22:29:41.4836630Z             {
2026-06-21T22:29:41.4836745Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4836841Z               "line": 289
2026-06-21T22:29:41.4836921Z             },
2026-06-21T22:29:41.4837006Z             {
2026-06-21T22:29:41.4837117Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4837203Z               "line": 307
2026-06-21T22:29:41.4837293Z             },
2026-06-21T22:29:41.4837379Z             {
2026-06-21T22:29:41.4837508Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.4837598Z               "line": 33
2026-06-21T22:29:41.4837680Z             },
2026-06-21T22:29:41.4837761Z             {
2026-06-21T22:29:41.4837879Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4837960Z               "line": 52
2026-06-21T22:29:41.4838117Z             },
2026-06-21T22:29:41.4838206Z             {
2026-06-21T22:29:41.4838310Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4838410Z               "line": 180
2026-06-21T22:29:41.4838497Z             },
2026-06-21T22:29:41.4838581Z             {
2026-06-21T22:29:41.4838702Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4838783Z               "line": 190
2026-06-21T22:29:41.4838868Z             },
2026-06-21T22:29:41.4839012Z             {
2026-06-21T22:29:41.4839125Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4839216Z               "line": 250
2026-06-21T22:29:41.4839403Z             },
2026-06-21T22:29:41.4839483Z             {
2026-06-21T22:29:41.4839593Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4839680Z               "line": 284
2026-06-21T22:29:41.4839765Z             },
2026-06-21T22:29:41.4839850Z             {
2026-06-21T22:29:41.4839966Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4840042Z               "line": 295
2026-06-21T22:29:41.4840126Z             },
2026-06-21T22:29:41.4840203Z             {
2026-06-21T22:29:41.4840304Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4840390Z               "line": 1193
2026-06-21T22:29:41.4840475Z             }
2026-06-21T22:29:41.4840561Z           ]
2026-06-21T22:29:41.4840638Z         },
2026-06-21T22:29:41.4840723Z         "int": {
2026-06-21T22:29:41.4840812Z           "complete": true,
2026-06-21T22:29:41.4840898Z           "evidence": [
2026-06-21T22:29:41.4840980Z             {
2026-06-21T22:29:41.4841094Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T22:29:41.4841189Z               "line": 18
2026-06-21T22:29:41.4841265Z             }
2026-06-21T22:29:41.4841356Z           ]
2026-06-21T22:29:41.4841437Z         },
2026-06-21T22:29:41.4841527Z         "unit": {
2026-06-21T22:29:41.4841615Z           "complete": true,
2026-06-21T22:29:41.4841705Z           "evidence": [
2026-06-21T22:29:41.4841785Z             {
2026-06-21T22:29:41.4841890Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4841985Z               "line": 364
2026-06-21T22:29:41.4842071Z             },
2026-06-21T22:29:41.4842152Z             {
2026-06-21T22:29:41.4842263Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4842348Z               "line": 416
2026-06-21T22:29:41.4842438Z             },
2026-06-21T22:29:41.4842520Z             {
2026-06-21T22:29:41.4842625Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4842715Z               "line": 426
2026-06-21T22:29:41.4842791Z             },
2026-06-21T22:29:41.4842874Z             {
2026-06-21T22:29:41.4842991Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4843081Z               "line": 436
2026-06-21T22:29:41.4843157Z             },
2026-06-21T22:29:41.4843243Z             {
2026-06-21T22:29:41.4843360Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4843445Z               "line": 456
2026-06-21T22:29:41.4843527Z             },
2026-06-21T22:29:41.4843618Z             {
2026-06-21T22:29:41.4843727Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4843813Z               "line": 478
2026-06-21T22:29:41.4843895Z             },
2026-06-21T22:29:41.4843975Z             {
2026-06-21T22:29:41.4844094Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4844190Z               "line": 491
2026-06-21T22:29:41.4844267Z             },
2026-06-21T22:29:41.4844352Z             {
2026-06-21T22:29:41.4844467Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T22:29:41.4844567Z               "line": 502
2026-06-21T22:29:41.4844638Z             },
2026-06-21T22:29:41.4844728Z             {
2026-06-21T22:29:41.4844843Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.4845029Z               "line": 108
2026-06-21T22:29:41.4845116Z             },
2026-06-21T22:29:41.4845200Z             {
2026-06-21T22:29:41.4845315Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T22:29:41.4845402Z               "line": 119
2026-06-21T22:29:41.4845487Z             },
2026-06-21T22:29:41.4845572Z             {
2026-06-21T22:29:41.4845673Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T22:29:41.4845765Z               "line": 127
2026-06-21T22:29:41.4845840Z             },
2026-06-21T22:29:41.4845929Z             {
2026-06-21T22:29:41.4846043Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4846218Z               "line": 474
2026-06-21T22:29:41.4846308Z             },
2026-06-21T22:29:41.4846390Z             {
2026-06-21T22:29:41.4846509Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4846594Z               "line": 501
2026-06-21T22:29:41.4846675Z             },
2026-06-21T22:29:41.4846762Z             {
2026-06-21T22:29:41.4846880Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4846966Z               "line": 520
2026-06-21T22:29:41.4847053Z             },
2026-06-21T22:29:41.4847138Z             {
2026-06-21T22:29:41.4847247Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4847329Z               "line": 535
2026-06-21T22:29:41.4847415Z             },
2026-06-21T22:29:41.4847496Z             {
2026-06-21T22:29:41.4847605Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4847687Z               "line": 561
2026-06-21T22:29:41.4847772Z             },
2026-06-21T22:29:41.4847872Z             {
2026-06-21T22:29:41.4847979Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4848064Z               "line": 581
2026-06-21T22:29:41.4848148Z             },
2026-06-21T22:29:41.4848235Z             {
2026-06-21T22:29:41.4848336Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4848435Z               "line": 591
2026-06-21T22:29:41.4848515Z             },
2026-06-21T22:29:41.4848596Z             {
2026-06-21T22:29:41.4848705Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4848799Z               "line": 683
2026-06-21T22:29:41.4848879Z             },
2026-06-21T22:29:41.4849062Z             {
2026-06-21T22:29:41.4849184Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4849271Z               "line": 885
2026-06-21T22:29:41.4849352Z             },
2026-06-21T22:29:41.4849438Z             {
2026-06-21T22:29:41.4849538Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4849634Z               "line": 9792
2026-06-21T22:29:41.4849710Z             }
2026-06-21T22:29:41.4849799Z           ]
2026-06-21T22:29:41.4849867Z         }
2026-06-21T22:29:41.4849958Z       }
2026-06-21T22:29:41.4850038Z     },
2026-06-21T22:29:41.4850119Z     {
2026-06-21T22:29:41.4850216Z       "id": "REQ-TERM-5",
2026-06-21T22:29:41.4851691Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T22:29:41.4851802Z       "requiredStages": [
2026-06-21T22:29:41.4851897Z         "doc",
2026-06-21T22:29:41.4851979Z         "impl",
2026-06-21T22:29:41.4852064Z         "unit",
2026-06-21T22:29:41.4852136Z         "int"
2026-06-21T22:29:41.4852226Z       ],
2026-06-21T22:29:41.4852312Z       "stages": {
2026-06-21T22:29:41.4852398Z         "doc": {
2026-06-21T22:29:41.4852494Z           "complete": true,
2026-06-21T22:29:41.4852678Z           "evidence": [
2026-06-21T22:29:41.4852771Z             {
2026-06-21T22:29:41.4852870Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4852956Z               "line": 234
2026-06-21T22:29:41.4853041Z             }
2026-06-21T22:29:41.4853124Z           ]
2026-06-21T22:29:41.4853213Z         },
2026-06-21T22:29:41.4853299Z         "impl": {
2026-06-21T22:29:41.4853390Z           "complete": true,
2026-06-21T22:29:41.4853481Z           "evidence": [
2026-06-21T22:29:41.4853565Z             {
2026-06-21T22:29:41.4853683Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4853873Z               "line": 75
2026-06-21T22:29:41.4853959Z             },
2026-06-21T22:29:41.4854035Z             {
2026-06-21T22:29:41.4854140Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4854220Z               "line": 131
2026-06-21T22:29:41.4854311Z             },
2026-06-21T22:29:41.4854392Z             {
2026-06-21T22:29:41.4854507Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4854602Z               "line": 22
2026-06-21T22:29:41.4854674Z             },
2026-06-21T22:29:41.4854765Z             {
2026-06-21T22:29:41.4854873Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4854959Z               "line": 87
2026-06-21T22:29:41.4855047Z             },
2026-06-21T22:29:41.4855132Z             {
2026-06-21T22:29:41.4855241Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T22:29:41.4855332Z               "line": 30
2026-06-21T22:29:41.4855418Z             },
2026-06-21T22:29:41.4855503Z             {
2026-06-21T22:29:41.4855642Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4855728Z               "line": 103
2026-06-21T22:29:41.4855813Z             },
2026-06-21T22:29:41.4855899Z             {
2026-06-21T22:29:41.4856010Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4856094Z               "line": 167
2026-06-21T22:29:41.4856185Z             },
2026-06-21T22:29:41.4856272Z             {
2026-06-21T22:29:41.4856390Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4856480Z               "line": 434
2026-06-21T22:29:41.4856565Z             },
2026-06-21T22:29:41.4856647Z             {
2026-06-21T22:29:41.4856749Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4856844Z               "line": 5650
2026-06-21T22:29:41.4856925Z             },
2026-06-21T22:29:41.4857003Z             {
2026-06-21T22:29:41.4857097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4857192Z               "line": 5957
2026-06-21T22:29:41.4857284Z             }
2026-06-21T22:29:41.4857365Z           ]
2026-06-21T22:29:41.4857450Z         },
2026-06-21T22:29:41.4857531Z         "int": {
2026-06-21T22:29:41.4857627Z           "complete": true,
2026-06-21T22:29:41.4857703Z           "evidence": [
2026-06-21T22:29:41.4857793Z             {
2026-06-21T22:29:41.4857947Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T22:29:41.4858037Z               "line": 17
2026-06-21T22:29:41.4858118Z             }
2026-06-21T22:29:41.4858204Z           ]
2026-06-21T22:29:41.4858285Z         },
2026-06-21T22:29:41.4858380Z         "unit": {
2026-06-21T22:29:41.4858465Z           "complete": true,
2026-06-21T22:29:41.4858548Z           "evidence": [
2026-06-21T22:29:41.4858638Z             {
2026-06-21T22:29:41.4858757Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4858853Z               "line": 375
2026-06-21T22:29:41.4859028Z             },
2026-06-21T22:29:41.4859118Z             {
2026-06-21T22:29:41.4859227Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4859312Z               "line": 162
2026-06-21T22:29:41.4859411Z             },
2026-06-21T22:29:41.4859492Z             {
2026-06-21T22:29:41.4859613Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4859832Z               "line": 179
2026-06-21T22:29:41.4859908Z             },
2026-06-21T22:29:41.4859988Z             {
2026-06-21T22:29:41.4860088Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4860180Z               "line": 201
2026-06-21T22:29:41.4860265Z             },
2026-06-21T22:29:41.4860346Z             {
2026-06-21T22:29:41.4860462Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4860547Z               "line": 212
2026-06-21T22:29:41.4860632Z             },
2026-06-21T22:29:41.4860713Z             {
2026-06-21T22:29:41.4860828Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T22:29:41.4861013Z               "line": 223
2026-06-21T22:29:41.4861101Z             },
2026-06-21T22:29:41.4861185Z             {
2026-06-21T22:29:41.4861300Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4861381Z               "line": 1525
2026-06-21T22:29:41.4861458Z             },
2026-06-21T22:29:41.4861542Z             {
2026-06-21T22:29:41.4861672Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4861754Z               "line": 1568
2026-06-21T22:29:41.4861843Z             },
2026-06-21T22:29:41.4861923Z             {
2026-06-21T22:29:41.4862052Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4862138Z               "line": 606
2026-06-21T22:29:41.4862233Z             },
2026-06-21T22:29:41.4862314Z             {
2026-06-21T22:29:41.4862425Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4862515Z               "line": 634
2026-06-21T22:29:41.4862604Z             },
2026-06-21T22:29:41.4862692Z             {
2026-06-21T22:29:41.4862796Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4862882Z               "line": 646
2026-06-21T22:29:41.4862963Z             },
2026-06-21T22:29:41.4863044Z             {
2026-06-21T22:29:41.4863163Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4863253Z               "line": 669
2026-06-21T22:29:41.4863336Z             },
2026-06-21T22:29:41.4863421Z             {
2026-06-21T22:29:41.4863526Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4863607Z               "line": 8503
2026-06-21T22:29:41.4863688Z             },
2026-06-21T22:29:41.4863773Z             {
2026-06-21T22:29:41.4863873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4863960Z               "line": 8561
2026-06-21T22:29:41.4864041Z             }
2026-06-21T22:29:41.4864121Z           ]
2026-06-21T22:29:41.4864197Z         }
2026-06-21T22:29:41.4864278Z       }
2026-06-21T22:29:41.4864359Z     },
2026-06-21T22:29:41.4864452Z     {
2026-06-21T22:29:41.4864547Z       "id": "REQ-TERM-6",
2026-06-21T22:29:41.4865626Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T22:29:41.4865730Z       "requiredStages": [
2026-06-21T22:29:41.4865825Z         "impl",
2026-06-21T22:29:41.4865902Z         "unit",
2026-06-21T22:29:41.4865987Z         "int"
2026-06-21T22:29:41.4866078Z       ],
2026-06-21T22:29:41.4866159Z       "stages": {
2026-06-21T22:29:41.4866246Z         "doc": {
2026-06-21T22:29:41.4866340Z           "complete": false,
2026-06-21T22:29:41.4866435Z           "evidence": []
2026-06-21T22:29:41.4866513Z         },
2026-06-21T22:29:41.4866603Z         "impl": {
2026-06-21T22:29:41.4866687Z           "complete": true,
2026-06-21T22:29:41.4866774Z           "evidence": [
2026-06-21T22:29:41.4866861Z             {
2026-06-21T22:29:41.4866983Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4867078Z               "line": 132
2026-06-21T22:29:41.4867240Z             },
2026-06-21T22:29:41.4867324Z             {
2026-06-21T22:29:41.4867432Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4867524Z               "line": 187
2026-06-21T22:29:41.4867611Z             },
2026-06-21T22:29:41.4867695Z             {
2026-06-21T22:29:41.4867815Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4867901Z               "line": 17
2026-06-21T22:29:41.4867981Z             },
2026-06-21T22:29:41.4868072Z             {
2026-06-21T22:29:41.4868178Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4868259Z               "line": 104
2026-06-21T22:29:41.4868406Z             },
2026-06-21T22:29:41.4868493Z             {
2026-06-21T22:29:41.4868607Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4868697Z               "line": 319
2026-06-21T22:29:41.4868779Z             },
2026-06-21T22:29:41.4868859Z             {
2026-06-21T22:29:41.4869060Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4869142Z               "line": 396
2026-06-21T22:29:41.4869221Z             }
2026-06-21T22:29:41.4869298Z           ]
2026-06-21T22:29:41.4869385Z         },
2026-06-21T22:29:41.4869489Z         "int": {
2026-06-21T22:29:41.4869588Z           "complete": true,
2026-06-21T22:29:41.4869678Z           "evidence": [
2026-06-21T22:29:41.4869759Z             {
2026-06-21T22:29:41.4869910Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T22:29:41.4869990Z               "line": 18
2026-06-21T22:29:41.4870077Z             }
2026-06-21T22:29:41.4870168Z           ]
2026-06-21T22:29:41.4870253Z         },
2026-06-21T22:29:41.4870339Z         "unit": {
2026-06-21T22:29:41.4870430Z           "complete": true,
2026-06-21T22:29:41.4870525Z           "evidence": [
2026-06-21T22:29:41.4870596Z             {
2026-06-21T22:29:41.4870712Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4870811Z               "line": 135
2026-06-21T22:29:41.4870896Z             },
2026-06-21T22:29:41.4870973Z             {
2026-06-21T22:29:41.4871078Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4871168Z               "line": 150
2026-06-21T22:29:41.4871258Z             },
2026-06-21T22:29:41.4871346Z             {
2026-06-21T22:29:41.4871464Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4871545Z               "line": 166
2026-06-21T22:29:41.4871631Z             },
2026-06-21T22:29:41.4871708Z             {
2026-06-21T22:29:41.4871826Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T22:29:41.4871912Z               "line": 257
2026-06-21T22:29:41.4871995Z             },
2026-06-21T22:29:41.4872070Z             {
2026-06-21T22:29:41.4872179Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4872280Z               "line": 738
2026-06-21T22:29:41.4872361Z             },
2026-06-21T22:29:41.4872455Z             {
2026-06-21T22:29:41.4872564Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4872645Z               "line": 759
2026-06-21T22:29:41.4872732Z             },
2026-06-21T22:29:41.4872817Z             {
2026-06-21T22:29:41.4872932Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T22:29:41.4873014Z               "line": 726
2026-06-21T22:29:41.4873103Z             }
2026-06-21T22:29:41.4873184Z           ]
2026-06-21T22:29:41.4873271Z         }
2026-06-21T22:29:41.4873356Z       }
2026-06-21T22:29:41.4873432Z     },
2026-06-21T22:29:41.4873518Z     {
2026-06-21T22:29:41.4873604Z       "id": "REQ-TERM-7",
2026-06-21T22:29:41.4874728Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T22:29:41.4874947Z       "requiredStages": [
2026-06-21T22:29:41.4875031Z         "impl",
2026-06-21T22:29:41.4875121Z         "unit",
2026-06-21T22:29:41.4875198Z         "int"
2026-06-21T22:29:41.4875285Z       ],
2026-06-21T22:29:41.4875369Z       "stages": {
2026-06-21T22:29:41.4875450Z         "doc": {
2026-06-21T22:29:41.4875552Z           "complete": false,
2026-06-21T22:29:41.4875637Z           "evidence": []
2026-06-21T22:29:41.4875722Z         },
2026-06-21T22:29:41.4875809Z         "impl": {
2026-06-21T22:29:41.4875895Z           "complete": true,
2026-06-21T22:29:41.4876089Z           "evidence": [
2026-06-21T22:29:41.4876176Z             {
2026-06-21T22:29:41.4876300Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4876390Z               "line": 133
2026-06-21T22:29:41.4876476Z             },
2026-06-21T22:29:41.4876557Z             {
2026-06-21T22:29:41.4876680Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4876772Z               "line": 326
2026-06-21T22:29:41.4876849Z             },
2026-06-21T22:29:41.4876933Z             {
2026-06-21T22:29:41.4877039Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T22:29:41.4877121Z               "line": 15
2026-06-21T22:29:41.4877201Z             },
2026-06-21T22:29:41.4877282Z             {
2026-06-21T22:29:41.4877392Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T22:29:41.4877479Z               "line": 32
2026-06-21T22:29:41.4877562Z             },
2026-06-21T22:29:41.4877648Z             {
2026-06-21T22:29:41.4877767Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.4877847Z               "line": 49
2026-06-21T22:29:41.4877927Z             },
2026-06-21T22:29:41.4878012Z             {
2026-06-21T22:29:41.4878123Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4878218Z               "line": 286
2026-06-21T22:29:41.4878298Z             },
2026-06-21T22:29:41.4878380Z             {
2026-06-21T22:29:41.4878485Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4878570Z               "line": 320
2026-06-21T22:29:41.4878651Z             }
2026-06-21T22:29:41.4878734Z           ]
2026-06-21T22:29:41.4878814Z         },
2026-06-21T22:29:41.4878894Z         "int": {
2026-06-21T22:29:41.4879147Z           "complete": true,
2026-06-21T22:29:41.4879233Z           "evidence": [
2026-06-21T22:29:41.4879329Z             {
2026-06-21T22:29:41.4879500Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T22:29:41.4879595Z               "line": 19
2026-06-21T22:29:41.4879678Z             }
2026-06-21T22:29:41.4879748Z           ]
2026-06-21T22:29:41.4879834Z         },
2026-06-21T22:29:41.4879915Z         "unit": {
2026-06-21T22:29:41.4880007Z           "complete": true,
2026-06-21T22:29:41.4880091Z           "evidence": [
2026-06-21T22:29:41.4880177Z             {
2026-06-21T22:29:41.4880286Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4880371Z               "line": 455
2026-06-21T22:29:41.4880460Z             },
2026-06-21T22:29:41.4880540Z             {
2026-06-21T22:29:41.4880651Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T22:29:41.4880751Z               "line": 568
2026-06-21T22:29:41.4880832Z             },
2026-06-21T22:29:41.4880918Z             {
2026-06-21T22:29:41.4881028Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T22:29:41.4881122Z               "line": 58
2026-06-21T22:29:41.4881213Z             },
2026-06-21T22:29:41.4881305Z             {
2026-06-21T22:29:41.4881419Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T22:29:41.4881495Z               "line": 77
2026-06-21T22:29:41.4881572Z             },
2026-06-21T22:29:41.4881652Z             {
2026-06-21T22:29:41.4881762Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T22:29:41.4881962Z               "line": 87
2026-06-21T22:29:41.4882043Z             },
2026-06-21T22:29:41.4882129Z             {
2026-06-21T22:29:41.4882230Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T22:29:41.4882315Z               "line": 94
2026-06-21T22:29:41.4882396Z             },
2026-06-21T22:29:41.4882482Z             {
2026-06-21T22:29:41.4882592Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4882677Z               "line": 691
2026-06-21T22:29:41.4882763Z             },
2026-06-21T22:29:41.4882840Z             {
2026-06-21T22:29:41.4882959Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T22:29:41.4883167Z               "line": 716
2026-06-21T22:29:41.4883254Z             }
2026-06-21T22:29:41.4883334Z           ]
2026-06-21T22:29:41.4883419Z         }
2026-06-21T22:29:41.4883506Z       }
2026-06-21T22:29:41.4883588Z     },
2026-06-21T22:29:41.4883668Z     {
2026-06-21T22:29:41.4883748Z       "id": "REQ-UPD-1",
2026-06-21T22:29:41.4883883Z       "title": "Peer-propagated update over P2P",
2026-06-21T22:29:41.4883969Z       "requiredStages": [
2026-06-21T22:29:41.4884044Z         "impl",
2026-06-21T22:29:41.4884121Z         "unit",
2026-06-21T22:29:41.4884202Z         "int"
2026-06-21T22:29:41.4884283Z       ],
2026-06-21T22:29:41.4884369Z       "stages": {
2026-06-21T22:29:41.4884456Z         "doc": {
2026-06-21T22:29:41.4884546Z           "complete": false,
2026-06-21T22:29:41.4884627Z           "evidence": []
2026-06-21T22:29:41.4884707Z         },
2026-06-21T22:29:41.4884795Z         "impl": {
2026-06-21T22:29:41.4884884Z           "complete": true,
2026-06-21T22:29:41.4884979Z           "evidence": [
2026-06-21T22:29:41.4885061Z             {
2026-06-21T22:29:41.4885185Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4885265Z               "line": 28
2026-06-21T22:29:41.4885350Z             },
2026-06-21T22:29:41.4885432Z             {
2026-06-21T22:29:41.4885549Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4885634Z               "line": 103
2026-06-21T22:29:41.4885715Z             },
2026-06-21T22:29:41.4885807Z             {
2026-06-21T22:29:41.4885916Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4886006Z               "line": 342
2026-06-21T22:29:41.4886087Z             },
2026-06-21T22:29:41.4886173Z             {
2026-06-21T22:29:41.4886282Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4886369Z               "line": 22
2026-06-21T22:29:41.4886460Z             },
2026-06-21T22:29:41.4886540Z             {
2026-06-21T22:29:41.4886669Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4886755Z               "line": 207
2026-06-21T22:29:41.4886850Z             },
2026-06-21T22:29:41.4886930Z             {
2026-06-21T22:29:41.4887046Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4887141Z               "line": 283
2026-06-21T22:29:41.4887226Z             },
2026-06-21T22:29:41.4887308Z             {
2026-06-21T22:29:41.4887418Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4887508Z               "line": 340
2026-06-21T22:29:41.4887584Z             },
2026-06-21T22:29:41.4887666Z             {
2026-06-21T22:29:41.4887794Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4890614Z               "line": 37
2026-06-21T22:29:41.4890727Z             }
2026-06-21T22:29:41.4890812Z           ]
2026-06-21T22:29:41.4890899Z         },
2026-06-21T22:29:41.4890973Z         "int": {
2026-06-21T22:29:41.4891077Z           "complete": true,
2026-06-21T22:29:41.4891182Z           "evidence": [
2026-06-21T22:29:41.4891259Z             {
2026-06-21T22:29:41.4891401Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T22:29:41.4891483Z               "line": 207
2026-06-21T22:29:41.4891564Z             },
2026-06-21T22:29:41.4891645Z             {
2026-06-21T22:29:41.4891926Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T22:29:41.4892021Z               "line": 1082
2026-06-21T22:29:41.4892098Z             }
2026-06-21T22:29:41.4892185Z           ]
2026-06-21T22:29:41.4892260Z         },
2026-06-21T22:29:41.4892345Z         "unit": {
2026-06-21T22:29:41.4892432Z           "complete": true,
2026-06-21T22:29:41.4892518Z           "evidence": [
2026-06-21T22:29:41.4892599Z             {
2026-06-21T22:29:41.4892717Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4892805Z               "line": 490
2026-06-21T22:29:41.4892884Z             },
2026-06-21T22:29:41.4892961Z             {
2026-06-21T22:29:41.4893180Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4893271Z               "line": 616
2026-06-21T22:29:41.4893352Z             },
2026-06-21T22:29:41.4893425Z             {
2026-06-21T22:29:41.4893561Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.4893651Z               "line": 277
2026-06-21T22:29:41.4893737Z             },
2026-06-21T22:29:41.4893819Z             {
2026-06-21T22:29:41.4893937Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4894018Z               "line": 124
2026-06-21T22:29:41.4894095Z             },
2026-06-21T22:29:41.4894172Z             {
2026-06-21T22:29:41.4894281Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4894367Z               "line": 200
2026-06-21T22:29:41.4894448Z             }
2026-06-21T22:29:41.4894529Z           ]
2026-06-21T22:29:41.4894614Z         }
2026-06-21T22:29:41.4894696Z       }
2026-06-21T22:29:41.4894786Z     },
2026-06-21T22:29:41.4894867Z     {
2026-06-21T22:29:41.4894957Z       "id": "REQ-UPD-2",
2026-06-21T22:29:41.4895111Z       "title": "All binaries signature-verified before handoff",
2026-06-21T22:29:41.4895206Z       "requiredStages": [
2026-06-21T22:29:41.4895282Z         "impl",
2026-06-21T22:29:41.4895369Z         "unit"
2026-06-21T22:29:41.4895458Z       ],
2026-06-21T22:29:41.4895539Z       "stages": {
2026-06-21T22:29:41.4895626Z         "doc": {
2026-06-21T22:29:41.4895721Z           "complete": false,
2026-06-21T22:29:41.4895811Z           "evidence": []
2026-06-21T22:29:41.4895896Z         },
2026-06-21T22:29:41.4895982Z         "impl": {
2026-06-21T22:29:41.4896076Z           "complete": true,
2026-06-21T22:29:41.4896166Z           "evidence": [
2026-06-21T22:29:41.4896256Z             {
2026-06-21T22:29:41.4896376Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4896452Z               "line": 343
2026-06-21T22:29:41.4896542Z             },
2026-06-21T22:29:41.4896629Z             {
2026-06-21T22:29:41.4896757Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4896842Z               "line": 476
2026-06-21T22:29:41.4896929Z             },
2026-06-21T22:29:41.4897006Z             {
2026-06-21T22:29:41.4897119Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4897205Z               "line": 29
2026-06-21T22:29:41.4897287Z             },
2026-06-21T22:29:41.4897372Z             {
2026-06-21T22:29:41.4897486Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4897568Z               "line": 271
2026-06-21T22:29:41.4897654Z             },
2026-06-21T22:29:41.4897735Z             {
2026-06-21T22:29:41.4897849Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4897931Z               "line": 288
2026-06-21T22:29:41.4898016Z             },
2026-06-21T22:29:41.4898083Z             {
2026-06-21T22:29:41.4898203Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4898307Z               "line": 408
2026-06-21T22:29:41.4898392Z             },
2026-06-21T22:29:41.4898474Z             {
2026-06-21T22:29:41.4898579Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4898664Z               "line": 558
2026-06-21T22:29:41.4898749Z             },
2026-06-21T22:29:41.4898911Z             {
2026-06-21T22:29:41.4899128Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4899209Z               "line": 155
2026-06-21T22:29:41.4899296Z             }
2026-06-21T22:29:41.4899385Z           ]
2026-06-21T22:29:41.4899466Z         },
2026-06-21T22:29:41.4899553Z         "int": {
2026-06-21T22:29:41.4899653Z           "complete": false,
2026-06-21T22:29:41.4899738Z           "evidence": []
2026-06-21T22:29:41.4899820Z         },
2026-06-21T22:29:41.4899910Z         "unit": {
2026-06-21T22:29:41.4899987Z           "complete": true,
2026-06-21T22:29:41.4900082Z           "evidence": [
2026-06-21T22:29:41.4900258Z             {
2026-06-21T22:29:41.4900377Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4900469Z               "line": 750
2026-06-21T22:29:41.4900554Z             },
2026-06-21T22:29:41.4900635Z             {
2026-06-21T22:29:41.4900740Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4900831Z               "line": 811
2026-06-21T22:29:41.4900911Z             },
2026-06-21T22:29:41.4901002Z             {
2026-06-21T22:29:41.4901118Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4901193Z               "line": 825
2026-06-21T22:29:41.4901277Z             },
2026-06-21T22:29:41.4901363Z             {
2026-06-21T22:29:41.4901478Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4901562Z               "line": 841
2026-06-21T22:29:41.4901637Z             },
2026-06-21T22:29:41.4901714Z             {
2026-06-21T22:29:41.4901824Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4901923Z               "line": 932
2026-06-21T22:29:41.4902004Z             },
2026-06-21T22:29:41.4902082Z             {
2026-06-21T22:29:41.4902206Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4902290Z               "line": 414
2026-06-21T22:29:41.4902377Z             },
2026-06-21T22:29:41.4902467Z             {
2026-06-21T22:29:41.4902586Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4902663Z               "line": 427
2026-06-21T22:29:41.4902750Z             },
2026-06-21T22:29:41.4902834Z             {
2026-06-21T22:29:41.4902954Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.4903050Z               "line": 410
2026-06-21T22:29:41.4903120Z             }
2026-06-21T22:29:41.4903201Z           ]
2026-06-21T22:29:41.4903282Z         }
2026-06-21T22:29:41.4903360Z       }
2026-06-21T22:29:41.4903445Z     },
2026-06-21T22:29:41.4903521Z     {
2026-06-21T22:29:41.4903607Z       "id": "REQ-UPD-3",
2026-06-21T22:29:41.4903792Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T22:29:41.4903898Z       "requiredStages": [
2026-06-21T22:29:41.4903985Z         "impl",
2026-06-21T22:29:41.4904070Z         "unit",
2026-06-21T22:29:41.4904154Z         "int"
2026-06-21T22:29:41.4904239Z       ],
2026-06-21T22:29:41.4904331Z       "stages": {
2026-06-21T22:29:41.4904408Z         "doc": {
2026-06-21T22:29:41.4904512Z           "complete": false,
2026-06-21T22:29:41.4904602Z           "evidence": []
2026-06-21T22:29:41.4904689Z         },
2026-06-21T22:29:41.4904769Z         "impl": {
2026-06-21T22:29:41.4904864Z           "complete": true,
2026-06-21T22:29:41.4904947Z           "evidence": [
2026-06-21T22:29:41.4905032Z             {
2026-06-21T22:29:41.4905160Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4905246Z               "line": 40
2026-06-21T22:29:41.4905327Z             },
2026-06-21T22:29:41.4905413Z             {
2026-06-21T22:29:41.4905537Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4905624Z               "line": 87
2026-06-21T22:29:41.4905709Z             },
2026-06-21T22:29:41.4905794Z             {
2026-06-21T22:29:41.4905905Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4905990Z               "line": 1120
2026-06-21T22:29:41.4906186Z             },
2026-06-21T22:29:41.4906272Z             {
2026-06-21T22:29:41.4906395Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4906480Z               "line": 2094
2026-06-21T22:29:41.4906561Z             },
2026-06-21T22:29:41.4906646Z             {
2026-06-21T22:29:41.4906759Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4906845Z               "line": 26
2026-06-21T22:29:41.4906917Z             },
2026-06-21T22:29:41.4907007Z             {
2026-06-21T22:29:41.4907111Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4907203Z               "line": 114
2026-06-21T22:29:41.4907355Z             },
2026-06-21T22:29:41.4907440Z             {
2026-06-21T22:29:41.4907561Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4907655Z               "line": 246
2026-06-21T22:29:41.4907736Z             },
2026-06-21T22:29:41.4907819Z             {
2026-06-21T22:29:41.4907933Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4908013Z               "line": 2442
2026-06-21T22:29:41.4908099Z             }
2026-06-21T22:29:41.4908185Z           ]
2026-06-21T22:29:41.4908266Z         },
2026-06-21T22:29:41.4908347Z         "int": {
2026-06-21T22:29:41.4908433Z           "complete": true,
2026-06-21T22:29:41.4908524Z           "evidence": [
2026-06-21T22:29:41.4908599Z             {
2026-06-21T22:29:41.4908719Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T22:29:41.4908815Z               "line": 58
2026-06-21T22:29:41.4908895Z             }
2026-06-21T22:29:41.4909063Z           ]
2026-06-21T22:29:41.4909149Z         },
2026-06-21T22:29:41.4909229Z         "unit": {
2026-06-21T22:29:41.4909314Z           "complete": true,
2026-06-21T22:29:41.4909414Z           "evidence": [
2026-06-21T22:29:41.4909499Z             {
2026-06-21T22:29:41.4909612Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4909702Z               "line": 532
2026-06-21T22:29:41.4909784Z             },
2026-06-21T22:29:41.4909861Z             {
2026-06-21T22:29:41.4909974Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4910066Z               "line": 585
2026-06-21T22:29:41.4910147Z             },
2026-06-21T22:29:41.4910227Z             {
2026-06-21T22:29:41.4910341Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4910433Z               "line": 653
2026-06-21T22:29:41.4910519Z             },
2026-06-21T22:29:41.4910598Z             {
2026-06-21T22:29:41.4910719Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T22:29:41.4910804Z               "line": 1102
2026-06-21T22:29:41.4910885Z             },
2026-06-21T22:29:41.4910976Z             {
2026-06-21T22:29:41.4911081Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4911166Z               "line": 271
2026-06-21T22:29:41.4911242Z             },
2026-06-21T22:29:41.4911325Z             {
2026-06-21T22:29:41.4911443Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4911529Z               "line": 295
2026-06-21T22:29:41.4911610Z             },
2026-06-21T22:29:41.4911692Z             {
2026-06-21T22:29:41.4911805Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4911895Z               "line": 316
2026-06-21T22:29:41.4911981Z             },
2026-06-21T22:29:41.4912061Z             {
2026-06-21T22:29:41.4912164Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4912250Z               "line": 332
2026-06-21T22:29:41.4912336Z             }
2026-06-21T22:29:41.4912423Z           ]
2026-06-21T22:29:41.4912512Z         }
2026-06-21T22:29:41.4912593Z       }
2026-06-21T22:29:41.4912671Z     },
2026-06-21T22:29:41.4912747Z     {
2026-06-21T22:29:41.4912836Z       "id": "REQ-UPD-4",
2026-06-21T22:29:41.4913009Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T22:29:41.4913218Z       "requiredStages": [
2026-06-21T22:29:41.4913310Z         "impl",
2026-06-21T22:29:41.4913389Z         "unit"
2026-06-21T22:29:41.4913470Z       ],
2026-06-21T22:29:41.4913552Z       "stages": {
2026-06-21T22:29:41.4913639Z         "doc": {
2026-06-21T22:29:41.4913724Z           "complete": false,
2026-06-21T22:29:41.4913814Z           "evidence": []
2026-06-21T22:29:41.4913891Z         },
2026-06-21T22:29:41.4913977Z         "impl": {
2026-06-21T22:29:41.4914062Z           "complete": true,
2026-06-21T22:29:41.4914143Z           "evidence": [
2026-06-21T22:29:41.4914225Z             {
2026-06-21T22:29:41.4914334Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4914550Z               "line": 41
2026-06-21T22:29:41.4914630Z             },
2026-06-21T22:29:41.4914714Z             {
2026-06-21T22:29:41.4914838Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4914925Z               "line": 88
2026-06-21T22:29:41.4915010Z             },
2026-06-21T22:29:41.4915096Z             {
2026-06-21T22:29:41.4915216Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4915302Z               "line": 23
2026-06-21T22:29:41.4915377Z             },
2026-06-21T22:29:41.4915458Z             {
2026-06-21T22:29:41.4915568Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4915645Z               "line": 56
2026-06-21T22:29:41.4915720Z             },
2026-06-21T22:29:41.4915807Z             {
2026-06-21T22:29:41.4915921Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4916001Z               "line": 77
2026-06-21T22:29:41.4916092Z             },
2026-06-21T22:29:41.4916175Z             {
2026-06-21T22:29:41.4916288Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T22:29:41.4916364Z               "line": 236
2026-06-21T22:29:41.4916441Z             },
2026-06-21T22:29:41.4916527Z             {
2026-06-21T22:29:41.4916636Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T22:29:41.4916726Z               "line": 108
2026-06-21T22:29:41.4916800Z             },
2026-06-21T22:29:41.4916879Z             {
2026-06-21T22:29:41.4916988Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4917078Z               "line": 270
2026-06-21T22:29:41.4917164Z             },
2026-06-21T22:29:41.4917243Z             {
2026-06-21T22:29:41.4917352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4917439Z               "line": 2441
2026-06-21T22:29:41.4917520Z             }
2026-06-21T22:29:41.4917601Z           ]
2026-06-21T22:29:41.4917686Z         },
2026-06-21T22:29:41.4917768Z         "int": {
2026-06-21T22:29:41.4917854Z           "complete": false,
2026-06-21T22:29:41.4917948Z           "evidence": []
2026-06-21T22:29:41.4918030Z         },
2026-06-21T22:29:41.4918116Z         "unit": {
2026-06-21T22:29:41.4918201Z           "complete": true,
2026-06-21T22:29:41.4918296Z           "evidence": [
2026-06-21T22:29:41.4918384Z             {
2026-06-21T22:29:41.4918493Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4918573Z               "line": 581
2026-06-21T22:29:41.4918654Z             },
2026-06-21T22:29:41.4918736Z             {
2026-06-21T22:29:41.4918850Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4918935Z               "line": 706
2026-06-21T22:29:41.4919089Z             },
2026-06-21T22:29:41.4919169Z             {
2026-06-21T22:29:41.4919274Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T22:29:41.4919357Z               "line": 384
2026-06-21T22:29:41.4919441Z             },
2026-06-21T22:29:41.4919527Z             {
2026-06-21T22:29:41.4919637Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4919723Z               "line": 102
2026-06-21T22:29:41.4919798Z             },
2026-06-21T22:29:41.4919883Z             {
2026-06-21T22:29:41.4919984Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4920172Z               "line": 123
2026-06-21T22:29:41.4920253Z             },
2026-06-21T22:29:41.4920334Z             {
2026-06-21T22:29:41.4920449Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T22:29:41.4920524Z               "line": 142
2026-06-21T22:29:41.4920606Z             },
2026-06-21T22:29:41.4920688Z             {
2026-06-21T22:29:41.4920796Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T22:29:41.4920882Z               "line": 582
2026-06-21T22:29:41.4920964Z             },
2026-06-21T22:29:41.4921045Z             {
2026-06-21T22:29:41.4921154Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T22:29:41.4921355Z               "line": 566
2026-06-21T22:29:41.4921436Z             },
2026-06-21T22:29:41.4921517Z             {
2026-06-21T22:29:41.4921622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4921708Z               "line": 8256
2026-06-21T22:29:41.4921789Z             }
2026-06-21T22:29:41.4921875Z           ]
2026-06-21T22:29:41.4921961Z         }
2026-06-21T22:29:41.4922041Z       }
2026-06-21T22:29:41.4922122Z     },
2026-06-21T22:29:41.4922205Z     {
2026-06-21T22:29:41.4922290Z       "id": "REQ-UPD-5",
2026-06-21T22:29:41.4922436Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T22:29:41.4922522Z       "requiredStages": [
2026-06-21T22:29:41.4922612Z         "impl",
2026-06-21T22:29:41.4922696Z         "unit"
2026-06-21T22:29:41.4922776Z       ],
2026-06-21T22:29:41.4922863Z       "stages": {
2026-06-21T22:29:41.4922944Z         "doc": {
2026-06-21T22:29:41.4923044Z           "complete": false,
2026-06-21T22:29:41.4923130Z           "evidence": []
2026-06-21T22:29:41.4923212Z         },
2026-06-21T22:29:41.4923287Z         "impl": {
2026-06-21T22:29:41.4923377Z           "complete": true,
2026-06-21T22:29:41.4923468Z           "evidence": [
2026-06-21T22:29:41.4923545Z             {
2026-06-21T22:29:41.4923678Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4923769Z               "line": 27
2026-06-21T22:29:41.4923855Z             },
2026-06-21T22:29:41.4923935Z             {
2026-06-21T22:29:41.4924059Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4924142Z               "line": 87
2026-06-21T22:29:41.4924227Z             },
2026-06-21T22:29:41.4924308Z             {
2026-06-21T22:29:41.4924437Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4924523Z               "line": 145
2026-06-21T22:29:41.4924602Z             },
2026-06-21T22:29:41.4924689Z             {
2026-06-21T22:29:41.4924809Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4924889Z               "line": 492
2026-06-21T22:29:41.4924980Z             },
2026-06-21T22:29:41.4925062Z             {
2026-06-21T22:29:41.4925181Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4925260Z               "line": 546
2026-06-21T22:29:41.4925346Z             }
2026-06-21T22:29:41.4925437Z           ]
2026-06-21T22:29:41.4925519Z         },
2026-06-21T22:29:41.4925608Z         "int": {
2026-06-21T22:29:41.4925698Z           "complete": false,
2026-06-21T22:29:41.4925791Z           "evidence": []
2026-06-21T22:29:41.4925872Z         },
2026-06-21T22:29:41.4925951Z         "unit": {
2026-06-21T22:29:41.4926043Z           "complete": true,
2026-06-21T22:29:41.4926138Z           "evidence": [
2026-06-21T22:29:41.4926224Z             {
2026-06-21T22:29:41.4926347Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4926443Z               "line": 272
2026-06-21T22:29:41.4926524Z             },
2026-06-21T22:29:41.4926614Z             {
2026-06-21T22:29:41.4926744Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4926833Z               "line": 286
2026-06-21T22:29:41.4926919Z             },
2026-06-21T22:29:41.4927002Z             {
2026-06-21T22:29:41.4927129Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4927296Z               "line": 300
2026-06-21T22:29:41.4927384Z             },
2026-06-21T22:29:41.4927472Z             {
2026-06-21T22:29:41.4927581Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4927677Z               "line": 314
2026-06-21T22:29:41.4927761Z             },
2026-06-21T22:29:41.4927846Z             {
2026-06-21T22:29:41.4927961Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4928047Z               "line": 348
2026-06-21T22:29:41.4928132Z             },
2026-06-21T22:29:41.4928213Z             {
2026-06-21T22:29:41.4928338Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4928499Z               "line": 1071
2026-06-21T22:29:41.4928580Z             }
2026-06-21T22:29:41.4928667Z           ]
2026-06-21T22:29:41.4928753Z         }
2026-06-21T22:29:41.4928833Z       }
2026-06-21T22:29:41.4928915Z     },
2026-06-21T22:29:41.4929062Z     {
2026-06-21T22:29:41.4929157Z       "id": "REQ-UPD-6",
2026-06-21T22:29:41.4929950Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T22:29:41.4930048Z       "requiredStages": [
2026-06-21T22:29:41.4930135Z         "doc",
2026-06-21T22:29:41.4930217Z         "impl",
2026-06-21T22:29:41.4930297Z         "unit",
2026-06-21T22:29:41.4930387Z         "int"
2026-06-21T22:29:41.4930467Z       ],
2026-06-21T22:29:41.4930558Z       "stages": {
2026-06-21T22:29:41.4930647Z         "doc": {
2026-06-21T22:29:41.4930728Z           "complete": true,
2026-06-21T22:29:41.4930813Z           "evidence": [
2026-06-21T22:29:41.4930895Z             {
2026-06-21T22:29:41.4931023Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T22:29:41.4931099Z               "line": 3
2026-06-21T22:29:41.4931186Z             },
2026-06-21T22:29:41.4931271Z             {
2026-06-21T22:29:41.4931380Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T22:29:41.4931462Z               "line": 3
2026-06-21T22:29:41.4931548Z             },
2026-06-21T22:29:41.4931629Z             {
2026-06-21T22:29:41.4931782Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T22:29:41.4931867Z               "line": 3
2026-06-21T22:29:41.4931953Z             }
2026-06-21T22:29:41.4932034Z           ]
2026-06-21T22:29:41.4932120Z         },
2026-06-21T22:29:41.4932206Z         "impl": {
2026-06-21T22:29:41.4932305Z           "complete": true,
2026-06-21T22:29:41.4932391Z           "evidence": [
2026-06-21T22:29:41.4932479Z             {
2026-06-21T22:29:41.4932591Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4932678Z               "line": 76
2026-06-21T22:29:41.4932755Z             },
2026-06-21T22:29:41.4932840Z             {
2026-06-21T22:29:41.4932967Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4933053Z               "line": 212
2026-06-21T22:29:41.4933143Z             },
2026-06-21T22:29:41.4933228Z             {
2026-06-21T22:29:41.4933336Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4933428Z               "line": 69
2026-06-21T22:29:41.4933514Z             },
2026-06-21T22:29:41.4933595Z             {
2026-06-21T22:29:41.4933709Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4933796Z               "line": 133
2026-06-21T22:29:41.4933886Z             },
2026-06-21T22:29:41.4933985Z             {
2026-06-21T22:29:41.4934105Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4934191Z               "line": 243
2026-06-21T22:29:41.4934281Z             },
2026-06-21T22:29:41.4934368Z             {
2026-06-21T22:29:41.4934477Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4934677Z               "line": 406
2026-06-21T22:29:41.4934754Z             },
2026-06-21T22:29:41.4934839Z             {
2026-06-21T22:29:41.4934944Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4935045Z               "line": 534
2026-06-21T22:29:41.4935130Z             },
2026-06-21T22:29:41.4935211Z             {
2026-06-21T22:29:41.4935322Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4935403Z               "line": 548
2026-06-21T22:29:41.4935492Z             },
2026-06-21T22:29:41.4935573Z             {
2026-06-21T22:29:41.4935689Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4935868Z               "line": 603
2026-06-21T22:29:41.4935944Z             },
2026-06-21T22:29:41.4936031Z             {
2026-06-21T22:29:41.4936135Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4936220Z               "line": 634
2026-06-21T22:29:41.4936307Z             },
2026-06-21T22:29:41.4936397Z             {
2026-06-21T22:29:41.4936525Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T22:29:41.4936613Z               "line": 137
2026-06-21T22:29:41.4936698Z             },
2026-06-21T22:29:41.4936779Z             {
2026-06-21T22:29:41.4936903Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T22:29:41.4936989Z               "line": 184
2026-06-21T22:29:41.4937079Z             },
2026-06-21T22:29:41.4937159Z             {
2026-06-21T22:29:41.4937271Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4937361Z               "line": 78
2026-06-21T22:29:41.4937442Z             },
2026-06-21T22:29:41.4937523Z             {
2026-06-21T22:29:41.4937633Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4937722Z               "line": 114
2026-06-21T22:29:41.4937808Z             },
2026-06-21T22:29:41.4937891Z             {
2026-06-21T22:29:41.4938000Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4938089Z               "line": 185
2026-06-21T22:29:41.4938179Z             },
2026-06-21T22:29:41.4938261Z             {
2026-06-21T22:29:41.4938368Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4938463Z               "line": 260
2026-06-21T22:29:41.4938535Z             },
2026-06-21T22:29:41.4938616Z             {
2026-06-21T22:29:41.4938725Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4938811Z               "line": 292
2026-06-21T22:29:41.4938898Z             },
2026-06-21T22:29:41.4939049Z             {
2026-06-21T22:29:41.4939160Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4939250Z               "line": 323
2026-06-21T22:29:41.4939341Z             },
2026-06-21T22:29:41.4939421Z             {
2026-06-21T22:29:41.4939532Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4939622Z               "line": 346
2026-06-21T22:29:41.4939707Z             },
2026-06-21T22:29:41.4939789Z             {
2026-06-21T22:29:41.4939890Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4939985Z               "line": 388
2026-06-21T22:29:41.4940065Z             },
2026-06-21T22:29:41.4940148Z             {
2026-06-21T22:29:41.4940284Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4940375Z               "line": 398
2026-06-21T22:29:41.4940467Z             },
2026-06-21T22:29:41.4940547Z             {
2026-06-21T22:29:41.4940661Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4940749Z               "line": 410
2026-06-21T22:29:41.4940835Z             },
2026-06-21T22:29:41.4940923Z             {
2026-06-21T22:29:41.4941032Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4941118Z               "line": 420
2026-06-21T22:29:41.4941203Z             },
2026-06-21T22:29:41.4941288Z             {
2026-06-21T22:29:41.4941402Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4941611Z               "line": 439
2026-06-21T22:29:41.4941697Z             },
2026-06-21T22:29:41.4941779Z             {
2026-06-21T22:29:41.4941888Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4941979Z               "line": 449
2026-06-21T22:29:41.4942066Z             },
2026-06-21T22:29:41.4942151Z             {
2026-06-21T22:29:41.4942255Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4942342Z               "line": 94
2026-06-21T22:29:41.4942423Z             },
2026-06-21T22:29:41.4942499Z             {
2026-06-21T22:29:41.4942618Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4942804Z               "line": 120
2026-06-21T22:29:41.4942885Z             },
2026-06-21T22:29:41.4942956Z             {
2026-06-21T22:29:41.4943072Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4943151Z               "line": 135
2026-06-21T22:29:41.4943238Z             },
2026-06-21T22:29:41.4943320Z             {
2026-06-21T22:29:41.4943438Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4943528Z               "line": 162
2026-06-21T22:29:41.4943608Z             },
2026-06-21T22:29:41.4943690Z             {
2026-06-21T22:29:41.4943802Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4943892Z               "line": 174
2026-06-21T22:29:41.4943969Z             },
2026-06-21T22:29:41.4944055Z             {
2026-06-21T22:29:41.4944174Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4944255Z               "line": 185
2026-06-21T22:29:41.4944341Z             },
2026-06-21T22:29:41.4944417Z             {
2026-06-21T22:29:41.4944531Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4944613Z               "line": 451
2026-06-21T22:29:41.4944703Z             },
2026-06-21T22:29:41.4944794Z             {
2026-06-21T22:29:41.4944908Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4944990Z               "line": 573
2026-06-21T22:29:41.4945075Z             },
2026-06-21T22:29:41.4945156Z             {
2026-06-21T22:29:41.4945262Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4945361Z               "line": 171
2026-06-21T22:29:41.4945442Z             },
2026-06-21T22:29:41.4945528Z             {
2026-06-21T22:29:41.4945638Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4945718Z               "line": 65
2026-06-21T22:29:41.4945804Z             },
2026-06-21T22:29:41.4945882Z             {
2026-06-21T22:29:41.4946009Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4946105Z               "line": 71
2026-06-21T22:29:41.4946187Z             },
2026-06-21T22:29:41.4946263Z             {
2026-06-21T22:29:41.4946362Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T22:29:41.4946447Z               "line": 77
2026-06-21T22:29:41.4946533Z             },
2026-06-21T22:29:41.4946615Z             {
2026-06-21T22:29:41.4946724Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4946814Z               "line": 778
2026-06-21T22:29:41.4946896Z             },
2026-06-21T22:29:41.4946972Z             {
2026-06-21T22:29:41.4947076Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4947173Z               "line": 795
2026-06-21T22:29:41.4947254Z             },
2026-06-21T22:29:41.4947344Z             {
2026-06-21T22:29:41.4947444Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4947525Z               "line": 838
2026-06-21T22:29:41.4947611Z             },
2026-06-21T22:29:41.4947692Z             {
2026-06-21T22:29:41.4947792Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4947874Z               "line": 981
2026-06-21T22:29:41.4947958Z             },
2026-06-21T22:29:41.4948039Z             {
2026-06-21T22:29:41.4948146Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4948301Z               "line": 1131
2026-06-21T22:29:41.4948388Z             }
2026-06-21T22:29:41.4948470Z           ]
2026-06-21T22:29:41.4948551Z         },
2026-06-21T22:29:41.4948635Z         "int": {
2026-06-21T22:29:41.4948720Z           "complete": true,
2026-06-21T22:29:41.4948811Z           "evidence": [
2026-06-21T22:29:41.4948887Z             {
2026-06-21T22:29:41.4949091Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.4949181Z               "line": 569
2026-06-21T22:29:41.4949262Z             },
2026-06-21T22:29:41.4949362Z             {
2026-06-21T22:29:41.4949463Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T22:29:41.4949648Z               "line": 135
2026-06-21T22:29:41.4949730Z             }
2026-06-21T22:29:41.4949816Z           ]
2026-06-21T22:29:41.4949896Z         },
2026-06-21T22:29:41.4949981Z         "unit": {
2026-06-21T22:29:41.4950083Z           "complete": true,
2026-06-21T22:29:41.4950168Z           "evidence": [
2026-06-21T22:29:41.4950258Z             {
2026-06-21T22:29:41.4950378Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4950478Z               "line": 626
2026-06-21T22:29:41.4950564Z             },
2026-06-21T22:29:41.4950640Z             {
2026-06-21T22:29:41.4950770Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4950854Z               "line": 675
2026-06-21T22:29:41.4950940Z             },
2026-06-21T22:29:41.4951008Z             {
2026-06-21T22:29:41.4951131Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T22:29:41.4951217Z               "line": 696
2026-06-21T22:29:41.4951304Z             },
2026-06-21T22:29:41.4951395Z             {
2026-06-21T22:29:41.4951497Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4951587Z               "line": 513
2026-06-21T22:29:41.4951673Z             },
2026-06-21T22:29:41.4951759Z             {
2026-06-21T22:29:41.4951881Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4951962Z               "line": 638
2026-06-21T22:29:41.4952044Z             },
2026-06-21T22:29:41.4952129Z             {
2026-06-21T22:29:41.4952248Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4952326Z               "line": 675
2026-06-21T22:29:41.4952411Z             },
2026-06-21T22:29:41.4952491Z             {
2026-06-21T22:29:41.4952611Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4955207Z               "line": 947
2026-06-21T22:29:41.4955311Z             },
2026-06-21T22:29:41.4955396Z             {
2026-06-21T22:29:41.4955531Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4955611Z               "line": 969
2026-06-21T22:29:41.4955697Z             },
2026-06-21T22:29:41.4955778Z             {
2026-06-21T22:29:41.4955897Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4955983Z               "line": 986
2026-06-21T22:29:41.4956069Z             },
2026-06-21T22:29:41.4956151Z             {
2026-06-21T22:29:41.4956264Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4956350Z               "line": 1001
2026-06-21T22:29:41.4956432Z             },
2026-06-21T22:29:41.4956518Z             {
2026-06-21T22:29:41.4956631Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4956728Z               "line": 1027
2026-06-21T22:29:41.4956819Z             },
2026-06-21T22:29:41.4956898Z             {
2026-06-21T22:29:41.4957016Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T22:29:41.4957108Z               "line": 457
2026-06-21T22:29:41.4957194Z             },
2026-06-21T22:29:41.4957270Z             {
2026-06-21T22:29:41.4957398Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T22:29:41.4957485Z               "line": 338
2026-06-21T22:29:41.4957561Z             },
2026-06-21T22:29:41.4957650Z             {
2026-06-21T22:29:41.4957885Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4957979Z               "line": 10549
2026-06-21T22:29:41.4958062Z             },
2026-06-21T22:29:41.4958147Z             {
2026-06-21T22:29:41.4958256Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4958343Z               "line": 1260
2026-06-21T22:29:41.4958429Z             },
2026-06-21T22:29:41.4958514Z             {
2026-06-21T22:29:41.4958628Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T22:29:41.4958711Z               "line": 130
2026-06-21T22:29:41.4958796Z             }
2026-06-21T22:29:41.4958876Z           ]
2026-06-21T22:29:41.4959116Z         }
2026-06-21T22:29:41.4959204Z       }
2026-06-21T22:29:41.4959281Z     },
2026-06-21T22:29:41.4959362Z     {
2026-06-21T22:29:41.4959456Z       "id": "REQ-UPD-7",
2026-06-21T22:29:41.4961515Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T22:29:41.4961621Z       "requiredStages": [
2026-06-21T22:29:41.4961705Z         "impl",
2026-06-21T22:29:41.4961786Z         "unit"
2026-06-21T22:29:41.4961869Z       ],
2026-06-21T22:29:41.4961950Z       "stages": {
2026-06-21T22:29:41.4962034Z         "doc": {
2026-06-21T22:29:41.4962115Z           "complete": false,
2026-06-21T22:29:41.4962210Z           "evidence": []
2026-06-21T22:29:41.4962291Z         },
2026-06-21T22:29:41.4962375Z         "impl": {
2026-06-21T22:29:41.4962465Z           "complete": true,
2026-06-21T22:29:41.4962551Z           "evidence": [
2026-06-21T22:29:41.4962637Z             {
2026-06-21T22:29:41.4962746Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4962837Z               "line": 2626
2026-06-21T22:29:41.4962910Z             }
2026-06-21T22:29:41.4962995Z           ]
2026-06-21T22:29:41.4963070Z         },
2026-06-21T22:29:41.4963142Z         "int": {
2026-06-21T22:29:41.4963229Z           "complete": false,
2026-06-21T22:29:41.4963315Z           "evidence": []
2026-06-21T22:29:41.4963399Z         },
2026-06-21T22:29:41.4963481Z         "unit": {
2026-06-21T22:29:41.4963581Z           "complete": true,
2026-06-21T22:29:41.4963672Z           "evidence": [
2026-06-21T22:29:41.4963748Z             {
2026-06-21T22:29:41.4963844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4963933Z               "line": 10525
2026-06-21T22:29:41.4964019Z             }
2026-06-21T22:29:41.4964106Z           ]
2026-06-21T22:29:41.4964197Z         }
2026-06-21T22:29:41.4964276Z       }
2026-06-21T22:29:41.4964358Z     },
2026-06-21T22:29:41.4964445Z     {
2026-06-21T22:29:41.4964526Z       "id": "REQ-UPD-8",
2026-06-21T22:29:41.4966963Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T22:29:41.4967182Z       "requiredStages": [
2026-06-21T22:29:41.4967268Z         "impl",
2026-06-21T22:29:41.4967355Z         "unit"
2026-06-21T22:29:41.4967440Z       ],
2026-06-21T22:29:41.4967525Z       "stages": {
2026-06-21T22:29:41.4967610Z         "doc": {
2026-06-21T22:29:41.4967692Z           "complete": false,
2026-06-21T22:29:41.4967787Z           "evidence": []
2026-06-21T22:29:41.4967858Z         },
2026-06-21T22:29:41.4967939Z         "impl": {
2026-06-21T22:29:41.4968026Z           "complete": true,
2026-06-21T22:29:41.4968116Z           "evidence": [
2026-06-21T22:29:41.4968192Z             {
2026-06-21T22:29:41.4968431Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4968516Z               "line": 77
2026-06-21T22:29:41.4968597Z             },
2026-06-21T22:29:41.4968679Z             {
2026-06-21T22:29:41.4968802Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4968883Z               "line": 49
2026-06-21T22:29:41.4969036Z             },
2026-06-21T22:29:41.4969117Z             {
2026-06-21T22:29:41.4969237Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4969323Z               "line": 152
2026-06-21T22:29:41.4969403Z             },
2026-06-21T22:29:41.4969484Z             {
2026-06-21T22:29:41.4969600Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4969684Z               "line": 215
2026-06-21T22:29:41.4969765Z             },
2026-06-21T22:29:41.4969845Z             {
2026-06-21T22:29:41.4969950Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4970044Z               "line": 230
2026-06-21T22:29:41.4970134Z             },
2026-06-21T22:29:41.4970215Z             {
2026-06-21T22:29:41.4970326Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4970411Z               "line": 247
2026-06-21T22:29:41.4970496Z             },
2026-06-21T22:29:41.4970573Z             {
2026-06-21T22:29:41.4970692Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4970772Z               "line": 269
2026-06-21T22:29:41.4970855Z             },
2026-06-21T22:29:41.4970936Z             {
2026-06-21T22:29:41.4971050Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4971131Z               "line": 66
2026-06-21T22:29:41.4971217Z             },
2026-06-21T22:29:41.4971298Z             {
2026-06-21T22:29:41.4971402Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4971489Z               "line": 154
2026-06-21T22:29:41.4971575Z             },
2026-06-21T22:29:41.4971665Z             {
2026-06-21T22:29:41.4971775Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4971861Z               "line": 2430
2026-06-21T22:29:41.4971951Z             },
2026-06-21T22:29:41.4972032Z             {
2026-06-21T22:29:41.4972138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4972219Z               "line": 2493
2026-06-21T22:29:41.4972303Z             },
2026-06-21T22:29:41.4972380Z             {
2026-06-21T22:29:41.4972481Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4972571Z               "line": 2503
2026-06-21T22:29:41.4972651Z             },
2026-06-21T22:29:41.4972736Z             {
2026-06-21T22:29:41.4972841Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4972925Z               "line": 2510
2026-06-21T22:29:41.4973006Z             },
2026-06-21T22:29:41.4973092Z             {
2026-06-21T22:29:41.4973192Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4973282Z               "line": 2627
2026-06-21T22:29:41.4973364Z             },
2026-06-21T22:29:41.4973450Z             {
2026-06-21T22:29:41.4973555Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4973649Z               "line": 480
2026-06-21T22:29:41.4973727Z             },
2026-06-21T22:29:41.4973808Z             {
2026-06-21T22:29:41.4974046Z               "path": "crates/xtask/src/main.rs",
2026-06-21T22:29:41.4974132Z               "line": 494
2026-06-21T22:29:41.4974218Z             }
2026-06-21T22:29:41.4974308Z           ]
2026-06-21T22:29:41.4974390Z         },
2026-06-21T22:29:41.4974475Z         "int": {
2026-06-21T22:29:41.4974565Z           "complete": false,
2026-06-21T22:29:41.4974661Z           "evidence": []
2026-06-21T22:29:41.4974748Z         },
2026-06-21T22:29:41.4974827Z         "unit": {
2026-06-21T22:29:41.4974913Z           "complete": true,
2026-06-21T22:29:41.4975001Z           "evidence": [
2026-06-21T22:29:41.4975081Z             {
2026-06-21T22:29:41.4975203Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T22:29:41.4975394Z               "line": 476
2026-06-21T22:29:41.4975478Z             },
2026-06-21T22:29:41.4975563Z             {
2026-06-21T22:29:41.4975668Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T22:29:41.4975760Z               "line": 580
2026-06-21T22:29:41.4975854Z             },
2026-06-21T22:29:41.4975935Z             {
2026-06-21T22:29:41.4976045Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4976126Z               "line": 10527
2026-06-21T22:29:41.4976207Z             },
2026-06-21T22:29:41.4976293Z             {
2026-06-21T22:29:41.4976403Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4976492Z               "line": 10549
2026-06-21T22:29:41.4976574Z             }
2026-06-21T22:29:41.4976656Z           ]
2026-06-21T22:29:41.4976736Z         }
2026-06-21T22:29:41.4976817Z       }
2026-06-21T22:29:41.4976888Z     },
2026-06-21T22:29:41.4976966Z     {
2026-06-21T22:29:41.4977060Z       "id": "REQ-UPD-9",
2026-06-21T22:29:41.4979758Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T22:29:41.4979869Z       "requiredStages": [
2026-06-21T22:29:41.4979958Z         "doc",
2026-06-21T22:29:41.4980040Z         "impl",
2026-06-21T22:29:41.4980126Z         "unit"
2026-06-21T22:29:41.4980207Z       ],
2026-06-21T22:29:41.4980292Z       "stages": {
2026-06-21T22:29:41.4980387Z         "doc": {
2026-06-21T22:29:41.4980478Z           "complete": true,
2026-06-21T22:29:41.4980562Z           "evidence": [
2026-06-21T22:29:41.4980642Z             {
2026-06-21T22:29:41.4980732Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4980823Z               "line": 93
2026-06-21T22:29:41.4980905Z             },
2026-06-21T22:29:41.4980980Z             {
2026-06-21T22:29:41.4981085Z               "path": "docs/MANIFEST.md",
2026-06-21T22:29:41.4981177Z               "line": 285
2026-06-21T22:29:41.4981257Z             }
2026-06-21T22:29:41.4981347Z           ]
2026-06-21T22:29:41.4981420Z         },
2026-06-21T22:29:41.4981501Z         "impl": {
2026-06-21T22:29:41.4981586Z           "complete": true,
2026-06-21T22:29:41.4981676Z           "evidence": [
2026-06-21T22:29:41.4981768Z             {
2026-06-21T22:29:41.4981882Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4981996Z               "line": 128
2026-06-21T22:29:41.4982078Z             },
2026-06-21T22:29:41.4982163Z             {
2026-06-21T22:29:41.4982277Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4982478Z               "line": 533
2026-06-21T22:29:41.4982569Z             },
2026-06-21T22:29:41.4982650Z             {
2026-06-21T22:29:41.4982774Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4982859Z               "line": 459
2026-06-21T22:29:41.4982945Z             },
2026-06-21T22:29:41.4983028Z             {
2026-06-21T22:29:41.4983140Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4983225Z               "line": 505
2026-06-21T22:29:41.4983301Z             },
2026-06-21T22:29:41.4983387Z             {
2026-06-21T22:29:41.4983500Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4983685Z               "line": 928
2026-06-21T22:29:41.4983767Z             },
2026-06-21T22:29:41.4983852Z             {
2026-06-21T22:29:41.4983972Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T22:29:41.4984054Z               "line": 302
2026-06-21T22:29:41.4984134Z             },
2026-06-21T22:29:41.4984224Z             {
2026-06-21T22:29:41.4984330Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4984415Z               "line": 5675
2026-06-21T22:29:41.4984496Z             },
2026-06-21T22:29:41.4984577Z             {
2026-06-21T22:29:41.4984683Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4984773Z               "line": 5720
2026-06-21T22:29:41.4984853Z             },
2026-06-21T22:29:41.4984936Z             {
2026-06-21T22:29:41.4985040Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4985116Z               "line": 5857
2026-06-21T22:29:41.4985202Z             },
2026-06-21T22:29:41.4985288Z             {
2026-06-21T22:29:41.4985392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4985478Z               "line": 5878
2026-06-21T22:29:41.4985561Z             },
2026-06-21T22:29:41.4985641Z             {
2026-06-21T22:29:41.4985740Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4985825Z               "line": 5901
2026-06-21T22:29:41.4985916Z             },
2026-06-21T22:29:41.4985996Z             {
2026-06-21T22:29:41.4986085Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4986170Z               "line": 5928
2026-06-21T22:29:41.4986257Z             }
2026-06-21T22:29:41.4986344Z           ]
2026-06-21T22:29:41.4986423Z         },
2026-06-21T22:29:41.4986505Z         "int": {
2026-06-21T22:29:41.4986601Z           "complete": false,
2026-06-21T22:29:41.4986687Z           "evidence": []
2026-06-21T22:29:41.4986776Z         },
2026-06-21T22:29:41.4986863Z         "unit": {
2026-06-21T22:29:41.4986953Z           "complete": true,
2026-06-21T22:29:41.4987048Z           "evidence": [
2026-06-21T22:29:41.4987129Z             {
2026-06-21T22:29:41.4987263Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T22:29:41.4987345Z               "line": 259
2026-06-21T22:29:41.4987435Z             },
2026-06-21T22:29:41.4987507Z             {
2026-06-21T22:29:41.4987616Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T22:29:41.4987706Z               "line": 657
2026-06-21T22:29:41.4987788Z             },
2026-06-21T22:29:41.4987870Z             {
2026-06-21T22:29:41.4987983Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T22:29:41.4988074Z               "line": 1107
2026-06-21T22:29:41.4988146Z             },
2026-06-21T22:29:41.4988222Z             {
2026-06-21T22:29:41.4988331Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.4988418Z               "line": 7565
2026-06-21T22:29:41.4988504Z             }
2026-06-21T22:29:41.4988588Z           ]
2026-06-21T22:29:41.4988669Z         }
2026-06-21T22:29:41.4988750Z       }
2026-06-21T22:29:41.4988836Z     },
2026-06-21T22:29:41.4988917Z     {
2026-06-21T22:29:41.4989112Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-21T22:29:41.4994246Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-21T22:29:41.4994570Z       "requiredStages": [
2026-06-21T22:29:41.4994656Z         "doc",
2026-06-21T22:29:41.4994741Z         "impl",
2026-06-21T22:29:41.4994823Z         "unit"
2026-06-21T22:29:41.4994909Z       ],
2026-06-21T22:29:41.4995000Z       "stages": {
2026-06-21T22:29:41.4995080Z         "doc": {
2026-06-21T22:29:41.4995171Z           "complete": true,
2026-06-21T22:29:41.4995266Z           "evidence": [
2026-06-21T22:29:41.4995338Z             {
2026-06-21T22:29:41.4995438Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.4995520Z               "line": 342
2026-06-21T22:29:41.4995609Z             }
2026-06-21T22:29:41.4995695Z           ]
2026-06-21T22:29:41.4995777Z         },
2026-06-21T22:29:41.4995858Z         "impl": {
2026-06-21T22:29:41.4995952Z           "complete": true,
2026-06-21T22:29:41.4996043Z           "evidence": [
2026-06-21T22:29:41.4996130Z             {
2026-06-21T22:29:41.4996249Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T22:29:41.4996338Z               "line": 306
2026-06-21T22:29:41.4996428Z             },
2026-06-21T22:29:41.4996509Z             {
2026-06-21T22:29:41.4996631Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4996721Z               "line": 683
2026-06-21T22:29:41.4996807Z             },
2026-06-21T22:29:41.4996890Z             {
2026-06-21T22:29:41.4997002Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4997089Z               "line": 859
2026-06-21T22:29:41.4997171Z             },
2026-06-21T22:29:41.4997256Z             {
2026-06-21T22:29:41.4997365Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4997452Z               "line": 777
2026-06-21T22:29:41.4997537Z             },
2026-06-21T22:29:41.4997609Z             {
2026-06-21T22:29:41.4997724Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.4997814Z               "line": 788
2026-06-21T22:29:41.4997895Z             }
2026-06-21T22:29:41.4997975Z           ]
2026-06-21T22:29:41.4998067Z         },
2026-06-21T22:29:41.4998148Z         "int": {
2026-06-21T22:29:41.4998238Z           "complete": false,
2026-06-21T22:29:41.4998324Z           "evidence": []
2026-06-21T22:29:41.4998396Z         },
2026-06-21T22:29:41.4998486Z         "unit": {
2026-06-21T22:29:41.4998572Z           "complete": true,
2026-06-21T22:29:41.4998740Z           "evidence": [
2026-06-21T22:29:41.4998824Z             {
2026-06-21T22:29:41.4998934Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4999102Z               "line": 1432
2026-06-21T22:29:41.4999172Z             },
2026-06-21T22:29:41.4999248Z             {
2026-06-21T22:29:41.4999362Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T22:29:41.4999440Z               "line": 1476
2026-06-21T22:29:41.4999524Z             },
2026-06-21T22:29:41.4999605Z             {
2026-06-21T22:29:41.4999716Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.4999792Z               "line": 2554
2026-06-21T22:29:41.5000002Z             },
2026-06-21T22:29:41.5000082Z             {
2026-06-21T22:29:41.5000187Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T22:29:41.5000273Z               "line": 2621
2026-06-21T22:29:41.5000350Z             },
2026-06-21T22:29:41.5000435Z             {
2026-06-21T22:29:41.5000540Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T22:29:41.5000632Z               "line": 1002
2026-06-21T22:29:41.5000716Z             }
2026-06-21T22:29:41.5000793Z           ]
2026-06-21T22:29:41.5000883Z         }
2026-06-21T22:29:41.5000966Z       }
2026-06-21T22:29:41.5001045Z     },
2026-06-21T22:29:41.5001117Z     {
2026-06-21T22:29:41.5001217Z       "id": "REQ-WHOAMI-1",
2026-06-21T22:29:41.5002811Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T22:29:41.5002912Z       "requiredStages": [
2026-06-21T22:29:41.5003007Z         "doc",
2026-06-21T22:29:41.5003087Z         "impl",
2026-06-21T22:29:41.5003169Z         "unit"
2026-06-21T22:29:41.5003250Z       ],
2026-06-21T22:29:41.5003336Z       "stages": {
2026-06-21T22:29:41.5003421Z         "doc": {
2026-06-21T22:29:41.5003509Z           "complete": true,
2026-06-21T22:29:41.5003598Z           "evidence": [
2026-06-21T22:29:41.5003689Z             {
2026-06-21T22:29:41.5003780Z               "path": "CONTEXT.md",
2026-06-21T22:29:41.5003866Z               "line": 707
2026-06-21T22:29:41.5003941Z             }
2026-06-21T22:29:41.5004022Z           ]
2026-06-21T22:29:41.5004105Z         },
2026-06-21T22:29:41.5004190Z         "impl": {
2026-06-21T22:29:41.5004284Z           "complete": true,
2026-06-21T22:29:41.5004369Z           "evidence": [
2026-06-21T22:29:41.5004455Z             {
2026-06-21T22:29:41.5004573Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.5004686Z               "line": 3190
2026-06-21T22:29:41.5004767Z             },
2026-06-21T22:29:41.5004854Z             {
2026-06-21T22:29:41.5004958Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.5005049Z               "line": 3218
2026-06-21T22:29:41.5005135Z             }
2026-06-21T22:29:41.5005216Z           ]
2026-06-21T22:29:41.5005306Z         },
2026-06-21T22:29:41.5005388Z         "int": {
2026-06-21T22:29:41.5005479Z           "complete": false,
2026-06-21T22:29:41.5005564Z           "evidence": []
2026-06-21T22:29:41.5005649Z         },
2026-06-21T22:29:41.5005736Z         "unit": {
2026-06-21T22:29:41.5005817Z           "complete": true,
2026-06-21T22:29:41.5005917Z           "evidence": [
2026-06-21T22:29:41.5005998Z             {
2026-06-21T22:29:41.5006108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.5006207Z               "line": 7847
2026-06-21T22:29:41.5006289Z             },
2026-06-21T22:29:41.5006371Z             {
2026-06-21T22:29:41.5006470Z               "path": "crates/spt/src/cli.rs",
2026-06-21T22:29:41.5006555Z               "line": 7900
2026-06-21T22:29:41.5006747Z             }
2026-06-21T22:29:41.5006832Z           ]
2026-06-21T22:29:41.5006917Z         }
2026-06-21T22:29:41.5006993Z       }
2026-06-21T22:29:41.5007074Z     }
2026-06-21T22:29:41.5007149Z   ],
2026-06-21T22:29:41.5007243Z   "findings": []
2026-06-21T22:29:41.5007320Z }
